From c7081b119ca5d236973405129e37e566d4ffce201778fe46566f217f69ac5b05 Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Thu, 14 Jan 2016 17:05:52 +0000 Subject: [PATCH 1/2] - Rebase to gdb version 7.10.1 as of version in Fedora 23: * reverse debugging on aarch64 * new commands or subcommands: - info os cpu, set/show serial parity, info dll - maint print symbol-cache/symbol-cache-statistics, maint flush-symbol-cache - record btrace bts, record bts - compile print - show/set mpx bound - tui enable/disable - record btrace pt, record pt - maint info btrace, maint btrace packet-history/clear-packet-history/clear * s390 support for vector ABI * "set sysroot" improvements related to remote targets * better support for debugging containerized programs (without "set sysroot") * HISTSIZE environment variable is replaced by GDBHISTSIZE * python scripting: - it's possible to write frame unwinders - several new methods in Objfile, Type and Value classes - gdb can auto-load scripts contained in special sections named '.debug_gdb_scripts'. * extensions for the MI interface, new remote packet types - Removed obsolete patches: 0001-S390-Add-target-descriptions-for-vector-register-set.patch 0001-S390-Fix-compiler-invocation-with-compile-command.patch 0001-S390-Support-new-vector-register-sections.patch 0002-S390-Add-vector-register-support-to-gdb.patch 0003-S390-Add-vector-register-support-to-gdbserver.patch OBS-URL: https://build.opensuse.org/package/show/devel:gcc/gdb?expand=0&rev=128 --- ...descriptions-for-vector-register-set.patch | 1471 ----------------- ...iler-invocation-with-compile-command.patch | 73 - ...Support-new-vector-register-sections.patch | 157 -- ...0-Add-vector-register-support-to-gdb.patch | 744 --------- ...vector-register-support-to-gdbserver.patch | 293 ---- 0004-S390-Vector-register-test-case.patch | 334 ---- ...ble-registers-with-the-empty-string-.patch | 47 - gdb-6.3-gstack-20050411.patch | 2 +- gdb-6.3-readnever-20050907.patch | 38 +- gdb-6.3-test-pie-20050107.patch | 73 +- gdb-6.5-bz190810-gdbserver-arch-advice.patch | 28 - gdb-6.6-buildid-locate-core-as-arg.patch | 44 +- ...warning-missing-debuginfo-rhbz981154.patch | 42 +- gdb-6.6-buildid-locate-rpm-suse.patch | 21 +- gdb-6.6-buildid-locate-rpm.patch | 107 +- ...6.6-buildid-locate-solib-missing-ids.patch | 30 +- gdb-6.6-buildid-locate.patch | 229 +-- gdb-6.6-bz235197-fork-detach-info.patch | 20 +- ...heduler_locking-step-sw-watchpoints2.patch | 217 --- gdb-6.8-attach-signalled-detach-stopped.patch | 34 +- gdb-6.8-bz457187-largefile-test.patch | 105 -- gdb-6.8-quit-never-aborts.patch | 38 +- gdb-7.10.1.tar.bz2 | 3 + ...add-workaround-to-broken-debug-files.patch | 28 +- gdb-7.9.1.tar.bz2 | 3 - gdb-archer-pie-addons.patch | 40 +- gdb-archer.patch | 64 +- gdb-attach-fail-reasons-5of5.patch | 145 +- gdb-btrobust.patch | 14 +- gdb-bz541866-rwatch-before-run.patch | 44 +- gdb-dts-rhel6-python-compat.patch | 22 +- gdb-enable-count-crash.patch | 85 - gdb-glibc-vdso-workaround.patch | 11 +- gdb-libstdc++-v3-python-r155978.tar.bz2 | 3 - gdb-libstdc++-v3-python-r225521.tar.bz2 | 3 + gdb-no-dg-extract-results-py.patch | 589 ------- gdb-pahole-python2.patch | 36 + gdb-probes-based-interface-robust-1of2.patch | 193 +++ gdb-probes-based-interface-robust-2of2.patch | 194 +++ gdb-python-gil.patch | 81 +- gdb-python3-py_hash_t-32bit.patch | 175 -- gdb-python3-testsuite.patch | 56 - ...1260558-ppc64le-skip_trampoline_code.patch | 257 +++ gdb-rhbz1270564-invalid-dwarf-regno.patch | 220 +++ gdb-rhbz795424-bitpos-20of25.patch | 843 +++++----- gdb-rhbz795424-bitpos-23of25.patch | 276 ++-- gdb-s390-reorder-arch.diff | 106 -- gdb-upstream.patch | 53 - gdb-vla-intel-stringbt-fix.patch | 40 +- gdb-vla-intel.patch | 470 +++--- gdb.changes | 52 + gdb.spec | 270 ++- 52 files changed, 2448 insertions(+), 6075 deletions(-) delete mode 100644 0001-S390-Add-target-descriptions-for-vector-register-set.patch delete mode 100644 0001-S390-Fix-compiler-invocation-with-compile-command.patch delete mode 100644 0001-S390-Support-new-vector-register-sections.patch delete mode 100644 0002-S390-Add-vector-register-support-to-gdb.patch delete mode 100644 0003-S390-Add-vector-register-support-to-gdbserver.patch delete mode 100644 0004-S390-Vector-register-test-case.patch delete mode 100644 0005-S390-Name-invisible-registers-with-the-empty-string-.patch delete mode 100644 gdb-6.5-bz190810-gdbserver-arch-advice.patch delete mode 100644 gdb-6.6-scheduler_locking-step-sw-watchpoints2.patch delete mode 100644 gdb-6.8-bz457187-largefile-test.patch create mode 100644 gdb-7.10.1.tar.bz2 delete mode 100644 gdb-7.9.1.tar.bz2 delete mode 100644 gdb-enable-count-crash.patch delete mode 100644 gdb-libstdc++-v3-python-r155978.tar.bz2 create mode 100644 gdb-libstdc++-v3-python-r225521.tar.bz2 delete mode 100644 gdb-no-dg-extract-results-py.patch create mode 100644 gdb-pahole-python2.patch create mode 100644 gdb-probes-based-interface-robust-1of2.patch create mode 100644 gdb-probes-based-interface-robust-2of2.patch delete mode 100644 gdb-python3-py_hash_t-32bit.patch delete mode 100644 gdb-python3-testsuite.patch create mode 100644 gdb-rhbz1260558-ppc64le-skip_trampoline_code.patch create mode 100644 gdb-rhbz1270564-invalid-dwarf-regno.patch delete mode 100644 gdb-s390-reorder-arch.diff delete mode 100644 gdb-upstream.patch diff --git a/0001-S390-Add-target-descriptions-for-vector-register-set.patch b/0001-S390-Add-target-descriptions-for-vector-register-set.patch deleted file mode 100644 index a4499b8..0000000 --- a/0001-S390-Add-target-descriptions-for-vector-register-set.patch +++ /dev/null @@ -1,1471 +0,0 @@ -Part of fate#318039 - -From 446899e472025a04017064f5172105cec70eb357 Mon Sep 17 00:00:00 2001 -From: Andreas Arnez -Date: Mon, 2 Mar 2015 10:57:39 +0100 -Subject: [PATCH] S390: Add target descriptions for vector register sets - -The IBM z13 has new vector registers v0-v31 which are presented by the -Linux kernel as two additional register sets. This patch adds XML -descriptions and the respective autogenerated .c and .dat files for -S390 targets with this feature. Note that supported combinations -include targets with and without a transactional execution facility. - -gdb/ChangeLog: - - * features/s390-tevx-linux64.xml: New file. - * features/s390-vx-linux64.xml: New file. - * features/s390-vx.xml: New file. - * features/s390x-tevx-linux64.xml: New file. - * features/s390x-vx-linux64.xml: New file. - * features/Makefile (WHICH): Add s390-vx-linux64, - s390x-vx-linux64, s390-tevx-linux64, and s390x-tevx-linux64. - (s390-vx-linux64-expedite, s390-tevx-linux64-expedite) - (s390x-vx-linux64-expedite, s390x-tevx-linux64-expedite): New - macros. - * features/s390-tevx-linux64.c: New generated file. - * features/s390-vx-linux64.c: Likewise. - * features/s390x-tevx-linux64.c: Likewise. - * features/s390x-vx-linux64.c: Likewise. - * regformats/s390-tevx-linux64.dat: Likewise. - * regformats/s390-vx-linux64.dat: Likewise. - * regformats/s390x-tevx-linux64.dat: Likewise. - * regformats/s390x-vx-linux64.dat: Likewise. - -gdb/doc/ChangeLog: - - * gdb.texinfo (S/390 and System z Features): Describe new feature - "org.gnu.gdb.s390.vx". ---- - gdb/ChangeLog | 21 ++++ - gdb/doc/ChangeLog | 5 + - gdb/doc/gdb.texinfo | 8 ++ - gdb/features/Makefile | 7 +- - gdb/features/s390-tevx-linux64.c | 188 ++++++++++++++++++++++++++++++++++ - gdb/features/s390-tevx-linux64.xml | 26 +++++ - gdb/features/s390-vx-linux64.c | 166 ++++++++++++++++++++++++++++++ - gdb/features/s390-vx-linux64.xml | 25 +++++ - gdb/features/s390-vx.xml | 59 +++++++++++ - gdb/features/s390x-tevx-linux64.c | 172 +++++++++++++++++++++++++++++++ - gdb/features/s390x-tevx-linux64.xml | 25 +++++ - gdb/features/s390x-vx-linux64.c | 150 +++++++++++++++++++++++++++ - gdb/features/s390x-vx-linux64.xml | 24 +++++ - gdb/regformats/s390-tevx-linux64.dat | 127 +++++++++++++++++++++++ - gdb/regformats/s390-vx-linux64.dat | 107 +++++++++++++++++++ - gdb/regformats/s390x-tevx-linux64.dat | 111 ++++++++++++++++++++ - gdb/regformats/s390x-vx-linux64.dat | 91 ++++++++++++++++ - 17 files changed, 1311 insertions(+), 1 deletion(-) - create mode 100644 gdb/features/s390-tevx-linux64.c - create mode 100644 gdb/features/s390-tevx-linux64.xml - create mode 100644 gdb/features/s390-vx-linux64.c - create mode 100644 gdb/features/s390-vx-linux64.xml - create mode 100644 gdb/features/s390-vx.xml - create mode 100644 gdb/features/s390x-tevx-linux64.c - create mode 100644 gdb/features/s390x-tevx-linux64.xml - create mode 100644 gdb/features/s390x-vx-linux64.c - create mode 100644 gdb/features/s390x-vx-linux64.xml - create mode 100644 gdb/regformats/s390-tevx-linux64.dat - create mode 100644 gdb/regformats/s390-vx-linux64.dat - create mode 100644 gdb/regformats/s390x-tevx-linux64.dat - create mode 100644 gdb/regformats/s390x-vx-linux64.dat - -diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo -index e84a251..19df52f 100644 ---- a/gdb/doc/gdb.texinfo -+++ b/gdb/doc/gdb.texinfo -@@ -39933,6 +39933,14 @@ The @samp{org.gnu.gdb.s390.tdb} feature is optional. It should - contain the 64-bit registers @samp{tdb0}, @samp{tac}, @samp{tct}, - @samp{atia}, and @samp{tr0} through @samp{tr15}. - -+The @samp{org.gnu.gdb.s390.vx} feature is optional. It should contain -+64-bit wide registers @samp{v0l} through @samp{v15l}, which will be -+combined by @value{GDBN} with the floating point registers @samp{f0} -+through @samp{f15} to present the 128-bit wide vector registers -+@samp{v0} through @samp{v15}. In addition, this feature should -+contain the 128-bit wide vector registers @samp{v16} through -+@samp{v31}. -+ - @node TIC6x Features - @subsection TMS320C6x Features - @cindex target descriptions, TIC6x features -diff --git a/gdb/features/Makefile b/gdb/features/Makefile -index 07cd2cb..74006e2 100644 ---- a/gdb/features/Makefile -+++ b/gdb/features/Makefile -@@ -68,7 +68,8 @@ WHICH = aarch64 \ - s390-linux32 s390-linux64 s390x-linux64 \ - s390-linux32v1 s390-linux64v1 s390x-linux64v1 \ - s390-linux32v2 s390-linux64v2 s390x-linux64v2 \ -- s390-te-linux64 s390x-te-linux64 \ -+ s390-te-linux64 s390x-te-linux64 s390-vx-linux64 s390x-vx-linux64 \ -+ s390-tevx-linux64 s390x-tevx-linux64 \ - tic6x-c64xp tic6x-c64x tic6x-c62x \ - tic6x-c64xp-linux tic6x-c64x-linux tic6x-c62x-linux - -@@ -115,10 +116,14 @@ s390-linux64-expedite = r14l,r15l,pswa - s390-linux64v1-expedite = r14l,r15l,pswa - s390-linux64v2-expedite = r14l,r15l,pswa - s390-te-linux64-expedite = r14l,r15l,pswa -+s390-vx-linux64-expedite = r14l,r15l,pswa -+s390-tevx-linux64-expedite = r14l,r15l,pswa - s390x-linux64-expedite = r14,r15,pswa - s390x-linux64v1-expedite = r14,r15,pswa - s390x-linux64v2-expedite = r14,r15,pswa - s390x-te-linux64-expedite = r14,r15,pswa -+s390x-vx-linux64-expedite = r14,r15,pswa -+s390x-tevx-linux64-expedite = r14,r15,pswa - tic6x-c64xp-expedite = A15,PC - tic6x-c64x-expedite = A15,PC - tic6x-c62x-expedite = A15,PC -diff --git a/gdb/features/s390-tevx-linux64.c b/gdb/features/s390-tevx-linux64.c -new file mode 100644 -index 0000000..5bc3eec ---- /dev/null -+++ b/gdb/features/s390-tevx-linux64.c -@@ -0,0 +1,188 @@ -+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: -+ Original: s390-tevx-linux64.xml */ -+ -+#include "defs.h" -+#include "osabi.h" -+#include "target-descriptions.h" -+ -+struct target_desc *tdesc_s390_tevx_linux64; -+static void -+initialize_tdesc_s390_tevx_linux64 (void) -+{ -+ struct target_desc *result = allocate_target_description (); -+ struct tdesc_feature *feature; -+ struct tdesc_type *field_type; -+ struct tdesc_type *type; -+ -+ set_tdesc_architecture (result, bfd_scan_arch ("s390:31-bit")); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core"); -+ tdesc_create_reg (feature, "pswm", 0, 1, "psw", 32, "uint32"); -+ tdesc_create_reg (feature, "pswa", 1, 1, "psw", 32, "uint32"); -+ tdesc_create_reg (feature, "r0h", 2, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r0l", 3, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r1h", 4, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r1l", 5, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r2h", 6, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r2l", 7, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r3h", 8, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r3l", 9, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r4h", 10, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r4l", 11, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r5h", 12, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r5l", 13, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r6h", 14, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r6l", 15, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r7h", 16, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r7l", 17, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r8h", 18, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r8l", 19, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r9h", 20, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r9l", 21, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r10h", 22, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r10l", 23, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r11h", 24, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r11l", 25, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r12h", 26, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r12l", 27, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r13h", 28, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r13l", 29, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r14h", 30, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r14l", 31, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r15h", 32, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r15l", 33, 1, "lower", 32, "uint32"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.acr"); -+ tdesc_create_reg (feature, "acr0", 34, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr1", 35, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr2", 36, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr3", 37, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr4", 38, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr5", 39, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr6", 40, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr7", 41, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr8", 42, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr9", 43, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr10", 44, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr11", 45, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr12", 46, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr13", 47, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr14", 48, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr15", 49, 1, "access", 32, "uint32"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.fpr"); -+ tdesc_create_reg (feature, "fpc", 50, 1, "float", 32, "uint32"); -+ tdesc_create_reg (feature, "f0", 51, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f1", 52, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f2", 53, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f3", 54, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f4", 55, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f5", 56, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f6", 57, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f7", 58, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f8", 59, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f9", 60, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f10", 61, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f11", 62, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f12", 63, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f13", 64, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f14", 65, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f15", 66, 1, "float", 64, "ieee_double"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.linux"); -+ tdesc_create_reg (feature, "orig_r2", 67, 1, "system", 32, "uint32"); -+ tdesc_create_reg (feature, "last_break", 68, 0, "system", 32, "code_ptr"); -+ tdesc_create_reg (feature, "system_call", 69, 1, "system", 32, "uint32"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.tdb"); -+ tdesc_create_reg (feature, "tdb0", 70, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tac", 71, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tct", 72, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "atia", 73, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr0", 74, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr1", 75, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr2", 76, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr3", 77, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr4", 78, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr5", 79, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr6", 80, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr7", 81, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr8", 82, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr9", 83, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr10", 84, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr11", 85, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr12", 86, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr13", 87, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr14", 88, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr15", 89, 1, "tdb", 64, "uint64"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx"); -+ field_type = tdesc_named_type (feature, "ieee_single"); -+ tdesc_create_vector (feature, "v4f", field_type, 4); -+ -+ field_type = tdesc_named_type (feature, "ieee_double"); -+ tdesc_create_vector (feature, "v2d", field_type, 2); -+ -+ field_type = tdesc_named_type (feature, "int8"); -+ tdesc_create_vector (feature, "v16i8", field_type, 16); -+ -+ field_type = tdesc_named_type (feature, "int16"); -+ tdesc_create_vector (feature, "v8i16", field_type, 8); -+ -+ field_type = tdesc_named_type (feature, "int32"); -+ tdesc_create_vector (feature, "v4i32", field_type, 4); -+ -+ field_type = tdesc_named_type (feature, "int64"); -+ tdesc_create_vector (feature, "v2i64", field_type, 2); -+ -+ type = tdesc_create_union (feature, "vec128"); -+ field_type = tdesc_named_type (feature, "v4f"); -+ tdesc_add_field (type, "v4_float", field_type); -+ field_type = tdesc_named_type (feature, "v2d"); -+ tdesc_add_field (type, "v2_double", field_type); -+ field_type = tdesc_named_type (feature, "v16i8"); -+ tdesc_add_field (type, "v16_int8", field_type); -+ field_type = tdesc_named_type (feature, "v8i16"); -+ tdesc_add_field (type, "v8_int16", field_type); -+ field_type = tdesc_named_type (feature, "v4i32"); -+ tdesc_add_field (type, "v4_int32", field_type); -+ field_type = tdesc_named_type (feature, "v2i64"); -+ tdesc_add_field (type, "v2_int64", field_type); -+ field_type = tdesc_named_type (feature, "uint128"); -+ tdesc_add_field (type, "uint128", field_type); -+ -+ tdesc_create_reg (feature, "v0l", 90, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v1l", 91, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v2l", 92, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v3l", 93, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v4l", 94, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v5l", 95, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v6l", 96, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v7l", 97, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v8l", 98, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v9l", 99, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v10l", 100, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v11l", 101, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v12l", 102, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v13l", 103, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v14l", 104, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v15l", 105, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v16", 106, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v17", 107, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v18", 108, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v19", 109, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v20", 110, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v21", 111, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v22", 112, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v23", 113, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v24", 114, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v25", 115, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v26", 116, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v27", 117, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v28", 118, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v29", 119, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v30", 120, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v31", 121, 1, NULL, 128, "vec128"); -+ -+ tdesc_s390_tevx_linux64 = result; -+} -diff --git a/gdb/features/s390-tevx-linux64.xml b/gdb/features/s390-tevx-linux64.xml -new file mode 100644 -index 0000000..9da1f6d ---- /dev/null -+++ b/gdb/features/s390-tevx-linux64.xml -@@ -0,0 +1,26 @@ -+ -+ -+ -+ -+ -+ -+ -+ s390:31-bit -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/gdb/features/s390-vx-linux64.c b/gdb/features/s390-vx-linux64.c -new file mode 100644 -index 0000000..c3ffa16 ---- /dev/null -+++ b/gdb/features/s390-vx-linux64.c -@@ -0,0 +1,166 @@ -+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: -+ Original: s390-vx-linux64.xml */ -+ -+#include "defs.h" -+#include "osabi.h" -+#include "target-descriptions.h" -+ -+struct target_desc *tdesc_s390_vx_linux64; -+static void -+initialize_tdesc_s390_vx_linux64 (void) -+{ -+ struct target_desc *result = allocate_target_description (); -+ struct tdesc_feature *feature; -+ struct tdesc_type *field_type; -+ struct tdesc_type *type; -+ -+ set_tdesc_architecture (result, bfd_scan_arch ("s390:31-bit")); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core"); -+ tdesc_create_reg (feature, "pswm", 0, 1, "psw", 32, "uint32"); -+ tdesc_create_reg (feature, "pswa", 1, 1, "psw", 32, "uint32"); -+ tdesc_create_reg (feature, "r0h", 2, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r0l", 3, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r1h", 4, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r1l", 5, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r2h", 6, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r2l", 7, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r3h", 8, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r3l", 9, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r4h", 10, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r4l", 11, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r5h", 12, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r5l", 13, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r6h", 14, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r6l", 15, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r7h", 16, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r7l", 17, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r8h", 18, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r8l", 19, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r9h", 20, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r9l", 21, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r10h", 22, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r10l", 23, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r11h", 24, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r11l", 25, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r12h", 26, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r12l", 27, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r13h", 28, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r13l", 29, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r14h", 30, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r14l", 31, 1, "lower", 32, "uint32"); -+ tdesc_create_reg (feature, "r15h", 32, 1, "upper", 32, "uint32"); -+ tdesc_create_reg (feature, "r15l", 33, 1, "lower", 32, "uint32"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.acr"); -+ tdesc_create_reg (feature, "acr0", 34, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr1", 35, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr2", 36, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr3", 37, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr4", 38, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr5", 39, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr6", 40, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr7", 41, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr8", 42, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr9", 43, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr10", 44, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr11", 45, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr12", 46, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr13", 47, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr14", 48, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr15", 49, 1, "access", 32, "uint32"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.fpr"); -+ tdesc_create_reg (feature, "fpc", 50, 1, "float", 32, "uint32"); -+ tdesc_create_reg (feature, "f0", 51, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f1", 52, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f2", 53, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f3", 54, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f4", 55, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f5", 56, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f6", 57, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f7", 58, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f8", 59, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f9", 60, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f10", 61, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f11", 62, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f12", 63, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f13", 64, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f14", 65, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f15", 66, 1, "float", 64, "ieee_double"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.linux"); -+ tdesc_create_reg (feature, "orig_r2", 67, 1, "system", 32, "uint32"); -+ tdesc_create_reg (feature, "last_break", 68, 0, "system", 32, "code_ptr"); -+ tdesc_create_reg (feature, "system_call", 69, 1, "system", 32, "uint32"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx"); -+ field_type = tdesc_named_type (feature, "ieee_single"); -+ tdesc_create_vector (feature, "v4f", field_type, 4); -+ -+ field_type = tdesc_named_type (feature, "ieee_double"); -+ tdesc_create_vector (feature, "v2d", field_type, 2); -+ -+ field_type = tdesc_named_type (feature, "int8"); -+ tdesc_create_vector (feature, "v16i8", field_type, 16); -+ -+ field_type = tdesc_named_type (feature, "int16"); -+ tdesc_create_vector (feature, "v8i16", field_type, 8); -+ -+ field_type = tdesc_named_type (feature, "int32"); -+ tdesc_create_vector (feature, "v4i32", field_type, 4); -+ -+ field_type = tdesc_named_type (feature, "int64"); -+ tdesc_create_vector (feature, "v2i64", field_type, 2); -+ -+ type = tdesc_create_union (feature, "vec128"); -+ field_type = tdesc_named_type (feature, "v4f"); -+ tdesc_add_field (type, "v4_float", field_type); -+ field_type = tdesc_named_type (feature, "v2d"); -+ tdesc_add_field (type, "v2_double", field_type); -+ field_type = tdesc_named_type (feature, "v16i8"); -+ tdesc_add_field (type, "v16_int8", field_type); -+ field_type = tdesc_named_type (feature, "v8i16"); -+ tdesc_add_field (type, "v8_int16", field_type); -+ field_type = tdesc_named_type (feature, "v4i32"); -+ tdesc_add_field (type, "v4_int32", field_type); -+ field_type = tdesc_named_type (feature, "v2i64"); -+ tdesc_add_field (type, "v2_int64", field_type); -+ field_type = tdesc_named_type (feature, "uint128"); -+ tdesc_add_field (type, "uint128", field_type); -+ -+ tdesc_create_reg (feature, "v0l", 70, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v1l", 71, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v2l", 72, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v3l", 73, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v4l", 74, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v5l", 75, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v6l", 76, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v7l", 77, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v8l", 78, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v9l", 79, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v10l", 80, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v11l", 81, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v12l", 82, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v13l", 83, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v14l", 84, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v15l", 85, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v16", 86, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v17", 87, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v18", 88, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v19", 89, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v20", 90, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v21", 91, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v22", 92, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v23", 93, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v24", 94, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v25", 95, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v26", 96, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v27", 97, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v28", 98, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v29", 99, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v30", 100, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v31", 101, 1, NULL, 128, "vec128"); -+ -+ tdesc_s390_vx_linux64 = result; -+} -diff --git a/gdb/features/s390-vx-linux64.xml b/gdb/features/s390-vx-linux64.xml -new file mode 100644 -index 0000000..ef8ebc0 ---- /dev/null -+++ b/gdb/features/s390-vx-linux64.xml -@@ -0,0 +1,25 @@ -+ -+ -+ -+ -+ -+ -+ -+ s390:31-bit -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/gdb/features/s390-vx.xml b/gdb/features/s390-vx.xml -new file mode 100644 -index 0000000..bfae8a1 ---- /dev/null -+++ b/gdb/features/s390-vx.xml -@@ -0,0 +1,59 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/gdb/features/s390x-tevx-linux64.c b/gdb/features/s390x-tevx-linux64.c -new file mode 100644 -index 0000000..327cd23 ---- /dev/null -+++ b/gdb/features/s390x-tevx-linux64.c -@@ -0,0 +1,172 @@ -+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: -+ Original: s390x-tevx-linux64.xml */ -+ -+#include "defs.h" -+#include "osabi.h" -+#include "target-descriptions.h" -+ -+struct target_desc *tdesc_s390x_tevx_linux64; -+static void -+initialize_tdesc_s390x_tevx_linux64 (void) -+{ -+ struct target_desc *result = allocate_target_description (); -+ struct tdesc_feature *feature; -+ struct tdesc_type *field_type; -+ struct tdesc_type *type; -+ -+ set_tdesc_architecture (result, bfd_scan_arch ("s390:64-bit")); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core"); -+ tdesc_create_reg (feature, "pswm", 0, 1, "psw", 64, "uint64"); -+ tdesc_create_reg (feature, "pswa", 1, 1, "psw", 64, "uint64"); -+ tdesc_create_reg (feature, "r0", 2, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r1", 3, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r2", 4, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r3", 5, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r4", 6, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r5", 7, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r6", 8, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r7", 9, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r8", 10, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r9", 11, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r10", 12, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r11", 13, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r12", 14, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r13", 15, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r14", 16, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r15", 17, 1, "general", 64, "uint64"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.acr"); -+ tdesc_create_reg (feature, "acr0", 18, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr1", 19, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr2", 20, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr3", 21, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr4", 22, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr5", 23, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr6", 24, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr7", 25, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr8", 26, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr9", 27, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr10", 28, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr11", 29, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr12", 30, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr13", 31, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr14", 32, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr15", 33, 1, "access", 32, "uint32"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.fpr"); -+ tdesc_create_reg (feature, "fpc", 34, 1, "float", 32, "uint32"); -+ tdesc_create_reg (feature, "f0", 35, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f1", 36, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f2", 37, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f3", 38, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f4", 39, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f5", 40, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f6", 41, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f7", 42, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f8", 43, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f9", 44, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f10", 45, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f11", 46, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f12", 47, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f13", 48, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f14", 49, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f15", 50, 1, "float", 64, "ieee_double"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.linux"); -+ tdesc_create_reg (feature, "orig_r2", 51, 1, "system", 64, "uint64"); -+ tdesc_create_reg (feature, "last_break", 52, 0, "system", 64, "code_ptr"); -+ tdesc_create_reg (feature, "system_call", 53, 1, "system", 32, "uint32"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.tdb"); -+ tdesc_create_reg (feature, "tdb0", 54, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tac", 55, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tct", 56, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "atia", 57, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr0", 58, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr1", 59, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr2", 60, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr3", 61, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr4", 62, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr5", 63, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr6", 64, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr7", 65, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr8", 66, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr9", 67, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr10", 68, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr11", 69, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr12", 70, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr13", 71, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr14", 72, 1, "tdb", 64, "uint64"); -+ tdesc_create_reg (feature, "tr15", 73, 1, "tdb", 64, "uint64"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx"); -+ field_type = tdesc_named_type (feature, "ieee_single"); -+ tdesc_create_vector (feature, "v4f", field_type, 4); -+ -+ field_type = tdesc_named_type (feature, "ieee_double"); -+ tdesc_create_vector (feature, "v2d", field_type, 2); -+ -+ field_type = tdesc_named_type (feature, "int8"); -+ tdesc_create_vector (feature, "v16i8", field_type, 16); -+ -+ field_type = tdesc_named_type (feature, "int16"); -+ tdesc_create_vector (feature, "v8i16", field_type, 8); -+ -+ field_type = tdesc_named_type (feature, "int32"); -+ tdesc_create_vector (feature, "v4i32", field_type, 4); -+ -+ field_type = tdesc_named_type (feature, "int64"); -+ tdesc_create_vector (feature, "v2i64", field_type, 2); -+ -+ type = tdesc_create_union (feature, "vec128"); -+ field_type = tdesc_named_type (feature, "v4f"); -+ tdesc_add_field (type, "v4_float", field_type); -+ field_type = tdesc_named_type (feature, "v2d"); -+ tdesc_add_field (type, "v2_double", field_type); -+ field_type = tdesc_named_type (feature, "v16i8"); -+ tdesc_add_field (type, "v16_int8", field_type); -+ field_type = tdesc_named_type (feature, "v8i16"); -+ tdesc_add_field (type, "v8_int16", field_type); -+ field_type = tdesc_named_type (feature, "v4i32"); -+ tdesc_add_field (type, "v4_int32", field_type); -+ field_type = tdesc_named_type (feature, "v2i64"); -+ tdesc_add_field (type, "v2_int64", field_type); -+ field_type = tdesc_named_type (feature, "uint128"); -+ tdesc_add_field (type, "uint128", field_type); -+ -+ tdesc_create_reg (feature, "v0l", 74, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v1l", 75, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v2l", 76, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v3l", 77, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v4l", 78, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v5l", 79, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v6l", 80, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v7l", 81, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v8l", 82, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v9l", 83, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v10l", 84, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v11l", 85, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v12l", 86, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v13l", 87, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v14l", 88, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v15l", 89, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v16", 90, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v17", 91, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v18", 92, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v19", 93, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v20", 94, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v21", 95, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v22", 96, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v23", 97, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v24", 98, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v25", 99, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v26", 100, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v27", 101, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v28", 102, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v29", 103, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v30", 104, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v31", 105, 1, NULL, 128, "vec128"); -+ -+ tdesc_s390x_tevx_linux64 = result; -+} -diff --git a/gdb/features/s390x-tevx-linux64.xml b/gdb/features/s390x-tevx-linux64.xml -new file mode 100644 -index 0000000..974992b ---- /dev/null -+++ b/gdb/features/s390x-tevx-linux64.xml -@@ -0,0 +1,25 @@ -+ -+ -+ -+ -+ -+ -+ -+ s390:64-bit -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/gdb/features/s390x-vx-linux64.c b/gdb/features/s390x-vx-linux64.c -new file mode 100644 -index 0000000..e66da70 ---- /dev/null -+++ b/gdb/features/s390x-vx-linux64.c -@@ -0,0 +1,150 @@ -+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: -+ Original: s390x-vx-linux64.xml */ -+ -+#include "defs.h" -+#include "osabi.h" -+#include "target-descriptions.h" -+ -+struct target_desc *tdesc_s390x_vx_linux64; -+static void -+initialize_tdesc_s390x_vx_linux64 (void) -+{ -+ struct target_desc *result = allocate_target_description (); -+ struct tdesc_feature *feature; -+ struct tdesc_type *field_type; -+ struct tdesc_type *type; -+ -+ set_tdesc_architecture (result, bfd_scan_arch ("s390:64-bit")); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core"); -+ tdesc_create_reg (feature, "pswm", 0, 1, "psw", 64, "uint64"); -+ tdesc_create_reg (feature, "pswa", 1, 1, "psw", 64, "uint64"); -+ tdesc_create_reg (feature, "r0", 2, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r1", 3, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r2", 4, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r3", 5, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r4", 6, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r5", 7, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r6", 8, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r7", 9, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r8", 10, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r9", 11, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r10", 12, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r11", 13, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r12", 14, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r13", 15, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r14", 16, 1, "general", 64, "uint64"); -+ tdesc_create_reg (feature, "r15", 17, 1, "general", 64, "uint64"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.acr"); -+ tdesc_create_reg (feature, "acr0", 18, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr1", 19, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr2", 20, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr3", 21, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr4", 22, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr5", 23, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr6", 24, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr7", 25, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr8", 26, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr9", 27, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr10", 28, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr11", 29, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr12", 30, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr13", 31, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr14", 32, 1, "access", 32, "uint32"); -+ tdesc_create_reg (feature, "acr15", 33, 1, "access", 32, "uint32"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.fpr"); -+ tdesc_create_reg (feature, "fpc", 34, 1, "float", 32, "uint32"); -+ tdesc_create_reg (feature, "f0", 35, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f1", 36, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f2", 37, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f3", 38, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f4", 39, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f5", 40, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f6", 41, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f7", 42, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f8", 43, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f9", 44, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f10", 45, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f11", 46, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f12", 47, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f13", 48, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f14", 49, 1, "float", 64, "ieee_double"); -+ tdesc_create_reg (feature, "f15", 50, 1, "float", 64, "ieee_double"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.linux"); -+ tdesc_create_reg (feature, "orig_r2", 51, 1, "system", 64, "uint64"); -+ tdesc_create_reg (feature, "last_break", 52, 0, "system", 64, "code_ptr"); -+ tdesc_create_reg (feature, "system_call", 53, 1, "system", 32, "uint32"); -+ -+ feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx"); -+ field_type = tdesc_named_type (feature, "ieee_single"); -+ tdesc_create_vector (feature, "v4f", field_type, 4); -+ -+ field_type = tdesc_named_type (feature, "ieee_double"); -+ tdesc_create_vector (feature, "v2d", field_type, 2); -+ -+ field_type = tdesc_named_type (feature, "int8"); -+ tdesc_create_vector (feature, "v16i8", field_type, 16); -+ -+ field_type = tdesc_named_type (feature, "int16"); -+ tdesc_create_vector (feature, "v8i16", field_type, 8); -+ -+ field_type = tdesc_named_type (feature, "int32"); -+ tdesc_create_vector (feature, "v4i32", field_type, 4); -+ -+ field_type = tdesc_named_type (feature, "int64"); -+ tdesc_create_vector (feature, "v2i64", field_type, 2); -+ -+ type = tdesc_create_union (feature, "vec128"); -+ field_type = tdesc_named_type (feature, "v4f"); -+ tdesc_add_field (type, "v4_float", field_type); -+ field_type = tdesc_named_type (feature, "v2d"); -+ tdesc_add_field (type, "v2_double", field_type); -+ field_type = tdesc_named_type (feature, "v16i8"); -+ tdesc_add_field (type, "v16_int8", field_type); -+ field_type = tdesc_named_type (feature, "v8i16"); -+ tdesc_add_field (type, "v8_int16", field_type); -+ field_type = tdesc_named_type (feature, "v4i32"); -+ tdesc_add_field (type, "v4_int32", field_type); -+ field_type = tdesc_named_type (feature, "v2i64"); -+ tdesc_add_field (type, "v2_int64", field_type); -+ field_type = tdesc_named_type (feature, "uint128"); -+ tdesc_add_field (type, "uint128", field_type); -+ -+ tdesc_create_reg (feature, "v0l", 54, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v1l", 55, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v2l", 56, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v3l", 57, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v4l", 58, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v5l", 59, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v6l", 60, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v7l", 61, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v8l", 62, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v9l", 63, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v10l", 64, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v11l", 65, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v12l", 66, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v13l", 67, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v14l", 68, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v15l", 69, 1, NULL, 64, "uint64"); -+ tdesc_create_reg (feature, "v16", 70, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v17", 71, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v18", 72, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v19", 73, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v20", 74, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v21", 75, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v22", 76, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v23", 77, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v24", 78, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v25", 79, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v26", 80, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v27", 81, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v28", 82, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v29", 83, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v30", 84, 1, NULL, 128, "vec128"); -+ tdesc_create_reg (feature, "v31", 85, 1, NULL, 128, "vec128"); -+ -+ tdesc_s390x_vx_linux64 = result; -+} -diff --git a/gdb/features/s390x-vx-linux64.xml b/gdb/features/s390x-vx-linux64.xml -new file mode 100644 -index 0000000..fd2f42e ---- /dev/null -+++ b/gdb/features/s390x-vx-linux64.xml -@@ -0,0 +1,24 @@ -+ -+ -+ -+ -+ -+ -+ -+ s390:64-bit -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/gdb/regformats/s390-tevx-linux64.dat b/gdb/regformats/s390-tevx-linux64.dat -new file mode 100644 -index 0000000..3db7a91 ---- /dev/null -+++ b/gdb/regformats/s390-tevx-linux64.dat -@@ -0,0 +1,127 @@ -+# THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi :set ro: -+# Generated from: s390-tevx-linux64.xml -+name:s390_tevx_linux64 -+xmltarget:s390-tevx-linux64.xml -+expedite:r14l,r15l,pswa -+32:pswm -+32:pswa -+32:r0h -+32:r0l -+32:r1h -+32:r1l -+32:r2h -+32:r2l -+32:r3h -+32:r3l -+32:r4h -+32:r4l -+32:r5h -+32:r5l -+32:r6h -+32:r6l -+32:r7h -+32:r7l -+32:r8h -+32:r8l -+32:r9h -+32:r9l -+32:r10h -+32:r10l -+32:r11h -+32:r11l -+32:r12h -+32:r12l -+32:r13h -+32:r13l -+32:r14h -+32:r14l -+32:r15h -+32:r15l -+32:acr0 -+32:acr1 -+32:acr2 -+32:acr3 -+32:acr4 -+32:acr5 -+32:acr6 -+32:acr7 -+32:acr8 -+32:acr9 -+32:acr10 -+32:acr11 -+32:acr12 -+32:acr13 -+32:acr14 -+32:acr15 -+32:fpc -+64:f0 -+64:f1 -+64:f2 -+64:f3 -+64:f4 -+64:f5 -+64:f6 -+64:f7 -+64:f8 -+64:f9 -+64:f10 -+64:f11 -+64:f12 -+64:f13 -+64:f14 -+64:f15 -+32:orig_r2 -+32:last_break -+32:system_call -+64:tdb0 -+64:tac -+64:tct -+64:atia -+64:tr0 -+64:tr1 -+64:tr2 -+64:tr3 -+64:tr4 -+64:tr5 -+64:tr6 -+64:tr7 -+64:tr8 -+64:tr9 -+64:tr10 -+64:tr11 -+64:tr12 -+64:tr13 -+64:tr14 -+64:tr15 -+64:v0l -+64:v1l -+64:v2l -+64:v3l -+64:v4l -+64:v5l -+64:v6l -+64:v7l -+64:v8l -+64:v9l -+64:v10l -+64:v11l -+64:v12l -+64:v13l -+64:v14l -+64:v15l -+128:v16 -+128:v17 -+128:v18 -+128:v19 -+128:v20 -+128:v21 -+128:v22 -+128:v23 -+128:v24 -+128:v25 -+128:v26 -+128:v27 -+128:v28 -+128:v29 -+128:v30 -+128:v31 -diff --git a/gdb/regformats/s390-vx-linux64.dat b/gdb/regformats/s390-vx-linux64.dat -new file mode 100644 -index 0000000..6a821fd ---- /dev/null -+++ b/gdb/regformats/s390-vx-linux64.dat -@@ -0,0 +1,107 @@ -+# THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi :set ro: -+# Generated from: s390-vx-linux64.xml -+name:s390_vx_linux64 -+xmltarget:s390-vx-linux64.xml -+expedite:r14l,r15l,pswa -+32:pswm -+32:pswa -+32:r0h -+32:r0l -+32:r1h -+32:r1l -+32:r2h -+32:r2l -+32:r3h -+32:r3l -+32:r4h -+32:r4l -+32:r5h -+32:r5l -+32:r6h -+32:r6l -+32:r7h -+32:r7l -+32:r8h -+32:r8l -+32:r9h -+32:r9l -+32:r10h -+32:r10l -+32:r11h -+32:r11l -+32:r12h -+32:r12l -+32:r13h -+32:r13l -+32:r14h -+32:r14l -+32:r15h -+32:r15l -+32:acr0 -+32:acr1 -+32:acr2 -+32:acr3 -+32:acr4 -+32:acr5 -+32:acr6 -+32:acr7 -+32:acr8 -+32:acr9 -+32:acr10 -+32:acr11 -+32:acr12 -+32:acr13 -+32:acr14 -+32:acr15 -+32:fpc -+64:f0 -+64:f1 -+64:f2 -+64:f3 -+64:f4 -+64:f5 -+64:f6 -+64:f7 -+64:f8 -+64:f9 -+64:f10 -+64:f11 -+64:f12 -+64:f13 -+64:f14 -+64:f15 -+32:orig_r2 -+32:last_break -+32:system_call -+64:v0l -+64:v1l -+64:v2l -+64:v3l -+64:v4l -+64:v5l -+64:v6l -+64:v7l -+64:v8l -+64:v9l -+64:v10l -+64:v11l -+64:v12l -+64:v13l -+64:v14l -+64:v15l -+128:v16 -+128:v17 -+128:v18 -+128:v19 -+128:v20 -+128:v21 -+128:v22 -+128:v23 -+128:v24 -+128:v25 -+128:v26 -+128:v27 -+128:v28 -+128:v29 -+128:v30 -+128:v31 -diff --git a/gdb/regformats/s390x-tevx-linux64.dat b/gdb/regformats/s390x-tevx-linux64.dat -new file mode 100644 -index 0000000..2df31e6 ---- /dev/null -+++ b/gdb/regformats/s390x-tevx-linux64.dat -@@ -0,0 +1,111 @@ -+# THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi :set ro: -+# Generated from: s390x-tevx-linux64.xml -+name:s390x_tevx_linux64 -+xmltarget:s390x-tevx-linux64.xml -+expedite:r14,r15,pswa -+64:pswm -+64:pswa -+64:r0 -+64:r1 -+64:r2 -+64:r3 -+64:r4 -+64:r5 -+64:r6 -+64:r7 -+64:r8 -+64:r9 -+64:r10 -+64:r11 -+64:r12 -+64:r13 -+64:r14 -+64:r15 -+32:acr0 -+32:acr1 -+32:acr2 -+32:acr3 -+32:acr4 -+32:acr5 -+32:acr6 -+32:acr7 -+32:acr8 -+32:acr9 -+32:acr10 -+32:acr11 -+32:acr12 -+32:acr13 -+32:acr14 -+32:acr15 -+32:fpc -+64:f0 -+64:f1 -+64:f2 -+64:f3 -+64:f4 -+64:f5 -+64:f6 -+64:f7 -+64:f8 -+64:f9 -+64:f10 -+64:f11 -+64:f12 -+64:f13 -+64:f14 -+64:f15 -+64:orig_r2 -+64:last_break -+32:system_call -+64:tdb0 -+64:tac -+64:tct -+64:atia -+64:tr0 -+64:tr1 -+64:tr2 -+64:tr3 -+64:tr4 -+64:tr5 -+64:tr6 -+64:tr7 -+64:tr8 -+64:tr9 -+64:tr10 -+64:tr11 -+64:tr12 -+64:tr13 -+64:tr14 -+64:tr15 -+64:v0l -+64:v1l -+64:v2l -+64:v3l -+64:v4l -+64:v5l -+64:v6l -+64:v7l -+64:v8l -+64:v9l -+64:v10l -+64:v11l -+64:v12l -+64:v13l -+64:v14l -+64:v15l -+128:v16 -+128:v17 -+128:v18 -+128:v19 -+128:v20 -+128:v21 -+128:v22 -+128:v23 -+128:v24 -+128:v25 -+128:v26 -+128:v27 -+128:v28 -+128:v29 -+128:v30 -+128:v31 -diff --git a/gdb/regformats/s390x-vx-linux64.dat b/gdb/regformats/s390x-vx-linux64.dat -new file mode 100644 -index 0000000..1d8f2b6 ---- /dev/null -+++ b/gdb/regformats/s390x-vx-linux64.dat -@@ -0,0 +1,91 @@ -+# THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi :set ro: -+# Generated from: s390x-vx-linux64.xml -+name:s390x_vx_linux64 -+xmltarget:s390x-vx-linux64.xml -+expedite:r14,r15,pswa -+64:pswm -+64:pswa -+64:r0 -+64:r1 -+64:r2 -+64:r3 -+64:r4 -+64:r5 -+64:r6 -+64:r7 -+64:r8 -+64:r9 -+64:r10 -+64:r11 -+64:r12 -+64:r13 -+64:r14 -+64:r15 -+32:acr0 -+32:acr1 -+32:acr2 -+32:acr3 -+32:acr4 -+32:acr5 -+32:acr6 -+32:acr7 -+32:acr8 -+32:acr9 -+32:acr10 -+32:acr11 -+32:acr12 -+32:acr13 -+32:acr14 -+32:acr15 -+32:fpc -+64:f0 -+64:f1 -+64:f2 -+64:f3 -+64:f4 -+64:f5 -+64:f6 -+64:f7 -+64:f8 -+64:f9 -+64:f10 -+64:f11 -+64:f12 -+64:f13 -+64:f14 -+64:f15 -+64:orig_r2 -+64:last_break -+32:system_call -+64:v0l -+64:v1l -+64:v2l -+64:v3l -+64:v4l -+64:v5l -+64:v6l -+64:v7l -+64:v8l -+64:v9l -+64:v10l -+64:v11l -+64:v12l -+64:v13l -+64:v14l -+64:v15l -+128:v16 -+128:v17 -+128:v18 -+128:v19 -+128:v20 -+128:v21 -+128:v22 -+128:v23 -+128:v24 -+128:v25 -+128:v26 -+128:v27 -+128:v28 -+128:v29 -+128:v30 -+128:v31 --- -1.8.1.4 - diff --git a/0001-S390-Fix-compiler-invocation-with-compile-command.patch b/0001-S390-Fix-compiler-invocation-with-compile-command.patch deleted file mode 100644 index 2c3ba42..0000000 --- a/0001-S390-Fix-compiler-invocation-with-compile-command.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 60abeae4f219a7a445d11ebaf72d2939413ffe80 Mon Sep 17 00:00:00 2001 -From: Andreas Arnez -Date: Fri, 27 Feb 2015 10:47:54 +0100 -Subject: [PATCH] S390: Fix compiler invocation with "compile" command - -On 64-bit S390 platforms the "compile" command always failed because -gcc was not invoked correctly. This patch fixes the compiler -invocation. - -gdb/ChangeLog: - - * s390-linux-tdep.c (s390_gcc_target_options): Not just handle - 31-bit targets, but 64-bit targets as well. - (s390_gnu_triplet_regexp): New function. - (s390_gdbarch_init): Set the gcc_target_options gdbarch method for - 64-bit targets as well. Set the gnu_triplet_regexp gdbarch - method. ---- - gdb/ChangeLog | 9 +++++++++ - gdb/s390-linux-tdep.c | 19 ++++++++++++++++--- - 2 files changed, 25 insertions(+), 3 deletions(-) - -diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c -index 9bd25fe..803779c 100644 ---- a/gdb/s390-linux-tdep.c -+++ b/gdb/s390-linux-tdep.c -@@ -2808,12 +2808,24 @@ s390_address_class_name_to_type_flags (struct gdbarch *gdbarch, - return 0; - } - --/* Implement gdbarch_gcc_target_options. GCC does not know "-m32". */ -+/* Implement gdbarch_gcc_target_options. GCC does not know "-m32" or -+ "-mcmodel=large". */ - - static char * - s390_gcc_target_options (struct gdbarch *gdbarch) - { -- return xstrdup ("-m31"); -+ return xstrdup (gdbarch_ptr_bit (gdbarch) == 64 ? "-m64" : "-m31"); -+} -+ -+/* Implement gdbarch_gnu_triplet_regexp. Target triplets are "s390-*" -+ for 31-bit and "s390x-*" for 64-bit, while the BFD arch name is -+ always "s390". Note that an s390x compiler supports "-m31" as -+ well. */ -+ -+static const char * -+s390_gnu_triplet_regexp (struct gdbarch *gdbarch) -+{ -+ return "s390x?"; - } - - /* Implementation of `gdbarch_stap_is_single_operand', as defined in -@@ -3112,7 +3124,6 @@ s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) - { - case ABI_LINUX_S390: - set_gdbarch_addr_bits_remove (gdbarch, s390_addr_bits_remove); -- set_gdbarch_gcc_target_options (gdbarch, s390_gcc_target_options); - set_solib_svr4_fetch_link_map_offsets - (gdbarch, svr4_ilp32_fetch_link_map_offsets); - -@@ -3152,6 +3163,8 @@ s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) - set_gdbarch_stap_register_indirection_suffixes (gdbarch, - stap_register_indirection_suffixes); - set_gdbarch_stap_is_single_operand (gdbarch, s390_stap_is_single_operand); -+ set_gdbarch_gcc_target_options (gdbarch, s390_gcc_target_options); -+ set_gdbarch_gnu_triplet_regexp (gdbarch, s390_gnu_triplet_regexp); - - return gdbarch; - } --- -1.8.1.4 - diff --git a/0001-S390-Support-new-vector-register-sections.patch b/0001-S390-Support-new-vector-register-sections.patch deleted file mode 100644 index b9ac367..0000000 --- a/0001-S390-Support-new-vector-register-sections.patch +++ /dev/null @@ -1,157 +0,0 @@ -From 4ef9f41a9538c9c7e4e540277e437b137cb64c4c Mon Sep 17 00:00:00 2001 -From: Andreas Arnez -Date: Fri, 20 Feb 2015 10:39:53 +0100 -Subject: [PATCH] S390: Support new vector register sections - -The IBM z13 has new 128-bit wide vector registers v0-v31, where v0-v15 -include the existing 64-bit wide floating point registers. The Linux -kernel presents the vector registers as two additional register sets, -one for the right halves of v0-v15 and another one for the full -registers v16-v31. Thus a new core file may contain two new register -note sections, and this patch adds support to binutils for them. - -bfd/ - * elf-bfd.h (elfcore_write_s390_vxrs_low): Add prototype. - (elfcore_write_s390_vxrs_high): Likewise. - * elf.c (elfcore_grok_s390_vxrs_low): New function. - (elfcore_grok_s390_vxrs_high): New function. - (elfcore_grok_note): Call them. - (elfcore_write_s390_vxrs_low): New function. - (elfcore_write_s390_vxrs_high): New function. - (elfcore_write_register_note): Call them. - -binutils/ - * readelf.c (get_note_type): Add NT_S390_VXRS_LOW and - NT_S390_VXRS_HIGH. - -include/elf/ - * common.h (NT_S390_VXRS_LOW): New macro. - (NT_S390_VXRS_HIGH): Likewise. ---- - bfd/ChangeLog | 11 +++++++++++ - bfd/elf-bfd.h | 4 ++++ - bfd/elf.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ - include/elf/ChangeLog | 5 +++++ - include/elf/common.h | 4 ++++ - 7 files changed, 88 insertions(+) - -diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h -index 495053d..156eec7 100644 ---- a/bfd/elf-bfd.h -+++ b/bfd/elf-bfd.h -@@ -2285,6 +2285,10 @@ extern char *elfcore_write_s390_system_call - (bfd *, char *, int *, const void *, int); - extern char *elfcore_write_s390_tdb - (bfd *, char *, int *, const void *, int); -+extern char *elfcore_write_s390_vxrs_low -+ (bfd *, char *, int *, const void *, int); -+extern char *elfcore_write_s390_vxrs_high -+ (bfd *, char *, int *, const void *, int); - extern char *elfcore_write_arm_vfp - (bfd *, char *, int *, const void *, int); - extern char *elfcore_write_aarch_tls -diff --git a/bfd/elf.c b/bfd/elf.c -index 0aa5f8e..14bc531 100644 ---- a/bfd/elf.c -+++ b/bfd/elf.c -@@ -8251,6 +8251,18 @@ elfcore_grok_s390_tdb (bfd *abfd, Elf_Internal_Note *note) - } - - static bfd_boolean -+elfcore_grok_s390_vxrs_low (bfd *abfd, Elf_Internal_Note *note) -+{ -+ return elfcore_make_note_pseudosection (abfd, ".reg-s390-vxrs-low", note); -+} -+ -+static bfd_boolean -+elfcore_grok_s390_vxrs_high (bfd *abfd, Elf_Internal_Note *note) -+{ -+ return elfcore_make_note_pseudosection (abfd, ".reg-s390-vxrs-high", note); -+} -+ -+static bfd_boolean - elfcore_grok_arm_vfp (bfd *abfd, Elf_Internal_Note *note) - { - return elfcore_make_note_pseudosection (abfd, ".reg-arm-vfp", note); -@@ -8714,6 +8726,20 @@ elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note) - else - return TRUE; - -+ case NT_S390_VXRS_LOW: -+ if (note->namesz == 6 -+ && strcmp (note->namedata, "LINUX") == 0) -+ return elfcore_grok_s390_vxrs_low (abfd, note); -+ else -+ return TRUE; -+ -+ case NT_S390_VXRS_HIGH: -+ if (note->namesz == 6 -+ && strcmp (note->namedata, "LINUX") == 0) -+ return elfcore_grok_s390_vxrs_high (abfd, note); -+ else -+ return TRUE; -+ - case NT_ARM_VFP: - if (note->namesz == 6 - && strcmp (note->namedata, "LINUX") == 0) -@@ -9580,6 +9606,31 @@ elfcore_write_s390_tdb (bfd *abfd, - } - - char * -+elfcore_write_s390_vxrs_low (bfd *abfd, -+ char *buf, -+ int *bufsiz, -+ const void *s390_vxrs_low, -+ int size) -+{ -+ char *note_name = "LINUX"; -+ return elfcore_write_note (abfd, buf, bufsiz, -+ note_name, NT_S390_VXRS_LOW, s390_vxrs_low, size); -+} -+ -+char * -+elfcore_write_s390_vxrs_high (bfd *abfd, -+ char *buf, -+ int *bufsiz, -+ const void *s390_vxrs_high, -+ int size) -+{ -+ char *note_name = "LINUX"; -+ return elfcore_write_note (abfd, buf, bufsiz, -+ note_name, NT_S390_VXRS_HIGH, -+ s390_vxrs_high, size); -+} -+ -+char * - elfcore_write_arm_vfp (bfd *abfd, - char *buf, - int *bufsiz, -@@ -9663,6 +9714,10 @@ elfcore_write_register_note (bfd *abfd, - return elfcore_write_s390_system_call (abfd, buf, bufsiz, data, size); - if (strcmp (section, ".reg-s390-tdb") == 0) - return elfcore_write_s390_tdb (abfd, buf, bufsiz, data, size); -+ if (strcmp (section, ".reg-s390-vxrs-low") == 0) -+ return elfcore_write_s390_vxrs_low (abfd, buf, bufsiz, data, size); -+ if (strcmp (section, ".reg-s390-vxrs-high") == 0) -+ return elfcore_write_s390_vxrs_high (abfd, buf, bufsiz, data, size); - if (strcmp (section, ".reg-arm-vfp") == 0) - return elfcore_write_arm_vfp (abfd, buf, bufsiz, data, size); - if (strcmp (section, ".reg-aarch-tls") == 0) -diff --git a/include/elf/common.h b/include/elf/common.h -index ae7b5f8..70778bf 100644 ---- a/include/elf/common.h -+++ b/include/elf/common.h -@@ -557,6 +557,10 @@ - /* note name must be "LINUX". */ - #define NT_S390_TDB 0x308 /* S390 transaction diagnostic block */ - /* note name must be "LINUX". */ -+#define NT_S390_VXRS_LOW 0x309 /* S390 vector registers 0-15 upper half */ -+ /* note name must be "LINUX". */ -+#define NT_S390_VXRS_HIGH 0x30a /* S390 vector registers 16-31 */ -+ /* note name must be "LINUX". */ - #define NT_ARM_VFP 0x400 /* ARM VFP registers */ - /* The following definitions should really use NT_AARCH_..., but defined - this way for compatibility with Linux. */ --- -1.8.1.4 - diff --git a/0002-S390-Add-vector-register-support-to-gdb.patch b/0002-S390-Add-vector-register-support-to-gdb.patch deleted file mode 100644 index 8f0a731..0000000 --- a/0002-S390-Add-vector-register-support-to-gdb.patch +++ /dev/null @@ -1,744 +0,0 @@ -Part of fate#318039 - -From 550bdf96cae94bc3e6c0f7e7e9a6793399dd8fe6 Mon Sep 17 00:00:00 2001 -From: Andreas Arnez -Date: Mon, 2 Mar 2015 10:57:39 +0100 -Subject: [PATCH] S390: Add vector register support to gdb - -Recognize S/390 targets with the new vector feature and present their -vector registers appropriately: as 32 new 128-bit wide registers -v0-v31, where the first 16 embed the floating point registers f0-f15. -Each of the full registers v0-v15 is modelled as a pseudo register. - -gdb/ChangeLog: - - * s390-linux-nat.c (have_regset_vxrs): New static variable. - (s390_linux_fetch_inferior_registers): Handle vector registers, if - present. - (s390_linux_store_inferior_registers): Likewise. - (s390_get_hwcap): Remove function. Embed its logic... - (s390_read_description): ...here. Yield a target description with - vector registers if applicable. - * s390-linux-tdep.c: Include "features/s390-vx-linux64.c", - "features/s390-tevx-linux64.c", "features/s390x-vx-linux64.c", and - "features/s390x-tevx-linux64.c". - (struct gdbarch_tdep) : New field. - (s390_dwarf_regmap): Add vector registers. Remove bogus entries - for "GNU/Linux-specific registers". - (s390_dwarf_reg_r0l): New enum value. - (s390_dwarf_reg_to_regnum): Support vector registers. - (s390_adjust_frame_regnum): Adjust pseudo DWARF register numbers - of GPR lower halves. - (regnum_is_vxr_full): New function. - (s390_register_name): New function. - (s390_pseudo_register_name): Handle v0-v15, which are composed of - f0-f15 and v0l-v15l. - (s390_pseudo_register_type): Likewise. - (s390_pseudo_register_read): Likewise. - (s390_pseudo_register_write): Likewise. - (s390_value_from_register): Account for the fact that values are - placed left-justified in vector registers. - (s390_pseudo_register_reggroup_p): Add pseudo registers v0-v15 to - the vector reggroup and omit them from the general reggroup. - (s390_regmap_vxrs_low, s390_regmap_vxrs_high): New register maps. - (s390_vxrs_low_regset, s390_vxrs_high_regset): New regsets. - (s390_iterate_over_regset_sections): Add iterations for the two - new vector regsets. - (s390_core_read_description): Yield a target description with - vector registers if applicable. - (s390_gdbarch_init): Handle target descriptions with vector - registers. Add "register_name" gdbarch method. - (_initialize_s390_tdep): Call new tdesc initialization functions. - * s390-linux-tdep.h (HWCAP_S390_VX): New macro. - (S390_V0_LOWER_REGNUM, S390_V1_LOWER_REGNUM, S390_V2_LOWER_REGNUM) - (S390_V3_LOWER_REGNUM, S390_V4_LOWER_REGNUM, S390_V5_LOWER_REGNUM) - (S390_V6_LOWER_REGNUM, S390_V7_LOWER_REGNUM, S390_V8_LOWER_REGNUM) - (S390_V9_LOWER_REGNUM, S390_V10_LOWER_REGNUM) - (S390_V11_LOWER_REGNUM, S390_V12_LOWER_REGNUM) - (S390_V13_LOWER_REGNUM, S390_V14_LOWER_REGNUM) - (S390_V15_LOWER_REGNUM, S390_V16_REGNUM, S390_V17_REGNUM) - (S390_V18_REGNUM, S390_V19_REGNUM, S390_V20_REGNUM) - (S390_V21_REGNUM, S390_V22_REGNUM, S390_V23_REGNUM) - (S390_V24_REGNUM, S390_V25_REGNUM, S390_V26_REGNUM) - (S390_V27_REGNUM, S390_V28_REGNUM, S390_V29_REGNUM) - (S390_V30_REGNUM, S390_V31_REGNUM): New macros. - (S390_NUM_REGS): Adjust value. - (s390_vxrs_low_regset, s390_vxrs_high_regset): Declare. - (tdesc_s390_vx_linux64, tdesc_s390_tevx_linux64) - (tdesc_s390x_vx_linux64, tdesc_s390x_tevx_linux64): Likewise. - * NEWS: Announce S/390 vector register support. ---- - gdb/ChangeLog | 58 +++++++++++++ - gdb/NEWS | 3 + - gdb/s390-linux-nat.c | 84 +++++++++++------- - gdb/s390-linux-tdep.c | 229 +++++++++++++++++++++++++++++++++++++++++++------- - gdb/s390-linux-tdep.h | 45 +++++++++- - 5 files changed, 359 insertions(+), 60 deletions(-) - -Index: gdb-7.9.1/gdb/NEWS -=================================================================== ---- gdb-7.9.1.orig/gdb/NEWS 2015-07-10 16:18:29.000000000 +0200 -+++ gdb-7.9.1/gdb/NEWS 2015-07-10 16:18:36.000000000 +0200 -@@ -7,6 +7,9 @@ - - ** Xmethods can now specify a result type. - -+* GDB now supports access to vector registers on S/390 GNU/Linux -+ targets. -+ - *** Changes in GDB 7.9 - - * GDB now supports hardware watchpoints on x86 GNU Hurd. -Index: gdb-7.9.1/gdb/s390-linux-nat.c -=================================================================== ---- gdb-7.9.1.orig/gdb/s390-linux-nat.c 2015-07-10 16:18:29.000000000 +0200 -+++ gdb-7.9.1/gdb/s390-linux-nat.c 2015-07-10 16:18:36.000000000 +0200 -@@ -49,6 +49,7 @@ - static int have_regset_last_break = 0; - static int have_regset_system_call = 0; - static int have_regset_tdb = 0; -+static int have_regset_vxrs = 0; - - /* Register map for 32-bit executables running under a 64-bit - kernel. */ -@@ -367,6 +368,18 @@ s390_linux_fetch_inferior_registers (str - if (regnum == -1 || S390_IS_TDBREGSET_REGNUM (regnum)) - fetch_regset (regcache, tid, NT_S390_TDB, s390_sizeof_tdbregset, - &s390_tdb_regset); -+ -+ if (have_regset_vxrs) -+ { -+ if (regnum == -1 || (regnum >= S390_V0_LOWER_REGNUM -+ && regnum <= S390_V15_LOWER_REGNUM)) -+ fetch_regset (regcache, tid, NT_S390_VXRS_LOW, 16 * 8, -+ &s390_vxrs_low_regset); -+ if (regnum == -1 || (regnum >= S390_V16_REGNUM -+ && regnum <= S390_V31_REGNUM)) -+ fetch_regset (regcache, tid, NT_S390_VXRS_HIGH, 16 * 16, -+ &s390_vxrs_high_regset); -+ } - } - - /* Store register REGNUM back into the child process. If REGNUM is -@@ -389,6 +402,18 @@ s390_linux_store_inferior_registers (str - if (regnum == -1 || regnum == S390_SYSTEM_CALL_REGNUM) - store_regset (regcache, tid, NT_S390_SYSTEM_CALL, 4, - &s390_system_call_regset); -+ -+ if (have_regset_vxrs) -+ { -+ if (regnum == -1 || (regnum >= S390_V0_LOWER_REGNUM -+ && regnum <= S390_V15_LOWER_REGNUM)) -+ store_regset (regcache, tid, NT_S390_VXRS_LOW, 16 * 8, -+ &s390_vxrs_low_regset); -+ if (regnum == -1 || (regnum >= S390_V16_REGNUM -+ && regnum <= S390_V31_REGNUM)) -+ store_regset (regcache, tid, NT_S390_VXRS_HIGH, 16 * 16, -+ &s390_vxrs_high_regset); -+ } - } - - -@@ -591,19 +616,6 @@ s390_auxv_parse (struct target_ops *ops, - return 1; - } - --#ifdef __s390x__ --static unsigned long --s390_get_hwcap (void) --{ -- CORE_ADDR field; -- -- if (target_auxv_search (¤t_target, AT_HWCAP, &field)) -- return (unsigned long) field; -- -- return 0; --} --#endif -- - static const struct target_desc * - s390_read_description (struct target_ops *ops) - { -@@ -614,27 +626,41 @@ s390_read_description (struct target_ops - have_regset_system_call - = check_regset (tid, NT_S390_SYSTEM_CALL, 4); - --#ifdef __s390x__ - /* If GDB itself is compiled as 64-bit, we are running on a machine in - z/Architecture mode. If the target is running in 64-bit addressing - mode, report s390x architecture. If the target is running in 31-bit - addressing mode, but the kernel supports using 64-bit registers in - that mode, report s390 architecture with 64-bit GPRs. */ -+#ifdef __s390x__ -+ { -+ CORE_ADDR hwcap = 0; - -- have_regset_tdb = (s390_get_hwcap () & HWCAP_S390_TE) ? -- check_regset (tid, NT_S390_TDB, s390_sizeof_tdbregset) : 0; -- -- if (s390_target_wordsize () == 8) -- return (have_regset_tdb ? tdesc_s390x_te_linux64 : -- have_regset_system_call? tdesc_s390x_linux64v2 : -- have_regset_last_break? tdesc_s390x_linux64v1 : -- tdesc_s390x_linux64); -- -- if (s390_get_hwcap () & HWCAP_S390_HIGH_GPRS) -- return (have_regset_tdb ? tdesc_s390_te_linux64 : -- have_regset_system_call? tdesc_s390_linux64v2 : -- have_regset_last_break? tdesc_s390_linux64v1 : -- tdesc_s390_linux64); -+ target_auxv_search (¤t_target, AT_HWCAP, &hwcap); -+ have_regset_tdb = (hwcap & HWCAP_S390_TE) -+ && check_regset (tid, NT_S390_TDB, s390_sizeof_tdbregset); -+ -+ have_regset_vxrs = (hwcap & HWCAP_S390_VX) -+ && check_regset (tid, NT_S390_VXRS_LOW, 16 * 8) -+ && check_regset (tid, NT_S390_VXRS_HIGH, 16 * 16); -+ -+ if (s390_target_wordsize () == 8) -+ return (have_regset_vxrs ? -+ (have_regset_tdb ? tdesc_s390x_tevx_linux64 : -+ tdesc_s390x_vx_linux64) : -+ have_regset_tdb ? tdesc_s390x_te_linux64 : -+ have_regset_system_call ? tdesc_s390x_linux64v2 : -+ have_regset_last_break ? tdesc_s390x_linux64v1 : -+ tdesc_s390x_linux64); -+ -+ if (hwcap & HWCAP_S390_HIGH_GPRS) -+ return (have_regset_vxrs ? -+ (have_regset_tdb ? tdesc_s390_tevx_linux64 : -+ tdesc_s390_vx_linux64) : -+ have_regset_tdb ? tdesc_s390_te_linux64 : -+ have_regset_system_call ? tdesc_s390_linux64v2 : -+ have_regset_last_break ? tdesc_s390_linux64v1 : -+ tdesc_s390_linux64); -+ } - #endif - - /* If GDB itself is compiled as 31-bit, or if we're running a 31-bit inferior -Index: gdb-7.9.1/gdb/s390-linux-tdep.c -=================================================================== ---- gdb-7.9.1.orig/gdb/s390-linux-tdep.c 2015-07-10 16:18:29.000000000 +0200 -+++ gdb-7.9.1/gdb/s390-linux-tdep.c 2015-07-10 16:18:36.000000000 +0200 -@@ -62,10 +62,14 @@ - #include "features/s390-linux64v1.c" - #include "features/s390-linux64v2.c" - #include "features/s390-te-linux64.c" -+#include "features/s390-vx-linux64.c" -+#include "features/s390-tevx-linux64.c" - #include "features/s390x-linux64.c" - #include "features/s390x-linux64v1.c" - #include "features/s390x-linux64v2.c" - #include "features/s390x-te-linux64.c" -+#include "features/s390x-vx-linux64.c" -+#include "features/s390x-tevx-linux64.c" - - #define XML_SYSCALL_FILENAME_S390 "syscalls/s390-linux.xml" - #define XML_SYSCALL_FILENAME_S390X "syscalls/s390x-linux.xml" -@@ -81,6 +85,7 @@ struct gdbarch_tdep - int gpr_full_regnum; - int pc_regnum; - int cc_regnum; -+ int v0_full_regnum; - - int have_linux_v1; - int have_linux_v2; -@@ -148,61 +153,83 @@ s390_write_pc (struct regcache *regcache - - static const short s390_dwarf_regmap[] = - { -- /* General Purpose Registers. */ -+ /* 0-15: General Purpose Registers. */ - S390_R0_REGNUM, S390_R1_REGNUM, S390_R2_REGNUM, S390_R3_REGNUM, - S390_R4_REGNUM, S390_R5_REGNUM, S390_R6_REGNUM, S390_R7_REGNUM, - S390_R8_REGNUM, S390_R9_REGNUM, S390_R10_REGNUM, S390_R11_REGNUM, - S390_R12_REGNUM, S390_R13_REGNUM, S390_R14_REGNUM, S390_R15_REGNUM, - -- /* Floating Point Registers. */ -+ /* 16-31: Floating Point Registers / Vector Registers 0-15. */ - S390_F0_REGNUM, S390_F2_REGNUM, S390_F4_REGNUM, S390_F6_REGNUM, - S390_F1_REGNUM, S390_F3_REGNUM, S390_F5_REGNUM, S390_F7_REGNUM, - S390_F8_REGNUM, S390_F10_REGNUM, S390_F12_REGNUM, S390_F14_REGNUM, - S390_F9_REGNUM, S390_F11_REGNUM, S390_F13_REGNUM, S390_F15_REGNUM, - -- /* Control Registers (not mapped). */ -+ /* 32-47: Control Registers (not mapped). */ - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -- /* Access Registers. */ -+ /* 48-63: Access Registers. */ - S390_A0_REGNUM, S390_A1_REGNUM, S390_A2_REGNUM, S390_A3_REGNUM, - S390_A4_REGNUM, S390_A5_REGNUM, S390_A6_REGNUM, S390_A7_REGNUM, - S390_A8_REGNUM, S390_A9_REGNUM, S390_A10_REGNUM, S390_A11_REGNUM, - S390_A12_REGNUM, S390_A13_REGNUM, S390_A14_REGNUM, S390_A15_REGNUM, - -- /* Program Status Word. */ -+ /* 64-65: Program Status Word. */ - S390_PSWM_REGNUM, - S390_PSWA_REGNUM, - -+ /* 66-67: Reserved. */ -+ -1, -1, -+ -+ /* 68-83: Vector Registers 16-31. */ -+ S390_V16_REGNUM, S390_V18_REGNUM, S390_V20_REGNUM, S390_V22_REGNUM, -+ S390_V17_REGNUM, S390_V19_REGNUM, S390_V21_REGNUM, S390_V23_REGNUM, -+ S390_V24_REGNUM, S390_V26_REGNUM, S390_V28_REGNUM, S390_V30_REGNUM, -+ S390_V25_REGNUM, S390_V27_REGNUM, S390_V29_REGNUM, S390_V31_REGNUM, -+ -+ /* End of "official" DWARF registers. The remainder of the map is -+ for GDB internal use only. */ -+ - /* GPR Lower Half Access. */ - S390_R0_REGNUM, S390_R1_REGNUM, S390_R2_REGNUM, S390_R3_REGNUM, - S390_R4_REGNUM, S390_R5_REGNUM, S390_R6_REGNUM, S390_R7_REGNUM, - S390_R8_REGNUM, S390_R9_REGNUM, S390_R10_REGNUM, S390_R11_REGNUM, - S390_R12_REGNUM, S390_R13_REGNUM, S390_R14_REGNUM, S390_R15_REGNUM, -- -- /* GNU/Linux-specific registers (not mapped). */ -- -1, -1, -1, - }; - -+enum { s390_dwarf_reg_r0l = ARRAY_SIZE (s390_dwarf_regmap) - 16 }; -+ - /* Convert DWARF register number REG to the appropriate register - number used by GDB. */ - static int - s390_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg) - { - struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); -+ int gdb_reg = -1; - -- /* In a 32-on-64 debug scenario, debug info refers to the full 64-bit -- GPRs. Note that call frame information still refers to the 32-bit -- lower halves, because s390_adjust_frame_regnum uses register numbers -- 66 .. 81 to access GPRs. */ -+ /* In a 32-on-64 debug scenario, debug info refers to the full -+ 64-bit GPRs. Note that call frame information still refers to -+ the 32-bit lower halves, because s390_adjust_frame_regnum uses -+ special register numbers to access GPRs. */ - if (tdep->gpr_full_regnum != -1 && reg >= 0 && reg < 16) - return tdep->gpr_full_regnum + reg; - - if (reg >= 0 && reg < ARRAY_SIZE (s390_dwarf_regmap)) -- return s390_dwarf_regmap[reg]; -+ gdb_reg = s390_dwarf_regmap[reg]; -+ -+ if (tdep->v0_full_regnum == -1) -+ { -+ if (gdb_reg >= S390_V16_REGNUM && gdb_reg <= S390_V31_REGNUM) -+ gdb_reg = -1; -+ } -+ else -+ { -+ if (gdb_reg >= S390_F0_REGNUM && gdb_reg <= S390_F15_REGNUM) -+ gdb_reg = gdb_reg - S390_F0_REGNUM + tdep->v0_full_regnum; -+ } - -- warning (_("Unmapped DWARF Register #%d encountered."), reg); -- return -1; -+ return gdb_reg; - } - - /* Translate a .eh_frame register to DWARF register, or adjust a -@@ -211,7 +238,7 @@ static int - s390_adjust_frame_regnum (struct gdbarch *gdbarch, int num, int eh_frame_p) - { - /* See s390_dwarf_reg_to_regnum for comments. */ -- return (num >= 0 && num < 16)? num + 66 : num; -+ return (num >= 0 && num < 16) ? num + s390_dwarf_reg_r0l : num; - } - - -@@ -225,6 +252,29 @@ regnum_is_gpr_full (struct gdbarch_tdep - && regnum <= tdep->gpr_full_regnum + 15); - } - -+/* Check whether REGNUM indicates a full vector register (v0-v15). -+ These pseudo-registers are composed of f0-f15 and v0l-v15l. */ -+ -+static int -+regnum_is_vxr_full (struct gdbarch_tdep *tdep, int regnum) -+{ -+ return (tdep->v0_full_regnum != -1 -+ && regnum >= tdep->v0_full_regnum -+ && regnum <= tdep->v0_full_regnum + 15); -+} -+ -+/* Return the name of register REGNO. Return NULL for registers that -+ shouldn't be visible. */ -+ -+static const char * -+s390_register_name (struct gdbarch *gdbarch, int regnum) -+{ -+ if (regnum >= S390_V0_LOWER_REGNUM -+ && regnum <= S390_V15_LOWER_REGNUM) -+ return NULL; -+ return tdesc_register_name (gdbarch, regnum); -+} -+ - static const char * - s390_pseudo_register_name (struct gdbarch *gdbarch, int regnum) - { -@@ -245,6 +295,15 @@ s390_pseudo_register_name (struct gdbarc - return full_name[regnum - tdep->gpr_full_regnum]; - } - -+ if (regnum_is_vxr_full (tdep, regnum)) -+ { -+ static const char *full_name[] = { -+ "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", -+ "v8", "v9", "v10", "v11", "v12", "v13", "v14", "v15" -+ }; -+ return full_name[regnum - tdep->v0_full_regnum]; -+ } -+ - internal_error (__FILE__, __LINE__, _("invalid regnum")); - } - -@@ -262,6 +321,9 @@ s390_pseudo_register_type (struct gdbarc - if (regnum_is_gpr_full (tdep, regnum)) - return builtin_type (gdbarch)->builtin_uint64; - -+ if (regnum_is_vxr_full (tdep, regnum)) -+ return tdesc_find_type (gdbarch, "vec128"); -+ - internal_error (__FILE__, __LINE__, _("invalid regnum")); - } - -@@ -323,6 +385,19 @@ s390_pseudo_register_read (struct gdbarc - return status; - } - -+ if (regnum_is_vxr_full (tdep, regnum)) -+ { -+ enum register_status status; -+ -+ regnum -= tdep->v0_full_regnum; -+ -+ status = regcache_raw_read (regcache, S390_F0_REGNUM + regnum, buf); -+ if (status == REG_VALID) -+ status = regcache_raw_read (regcache, -+ S390_V0_LOWER_REGNUM + regnum, buf + 8); -+ return status; -+ } -+ - internal_error (__FILE__, __LINE__, _("invalid regnum")); - } - -@@ -370,22 +445,34 @@ s390_pseudo_register_write (struct gdbar - return; - } - -+ if (regnum_is_vxr_full (tdep, regnum)) -+ { -+ regnum -= tdep->v0_full_regnum; -+ regcache_raw_write (regcache, S390_F0_REGNUM + regnum, buf); -+ regcache_raw_write (regcache, S390_V0_LOWER_REGNUM + regnum, buf + 8); -+ return; -+ } -+ - internal_error (__FILE__, __LINE__, _("invalid regnum")); - } - - /* 'float' values are stored in the upper half of floating-point -- registers, even though we are otherwise a big-endian platform. */ -+ registers, even though we are otherwise a big-endian platform. The -+ same applies to a 'float' value within a vector. */ - - static struct value * - s390_value_from_register (struct gdbarch *gdbarch, struct type *type, - int regnum, struct frame_id frame_id) - { -+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - struct value *value = default_value_from_register (gdbarch, type, - regnum, frame_id); - check_typedef (type); - -- if (regnum >= S390_F0_REGNUM && regnum <= S390_F15_REGNUM -- && TYPE_LENGTH (type) < 8) -+ if ((regnum >= S390_F0_REGNUM && regnum <= S390_F15_REGNUM -+ && TYPE_LENGTH (type) < 8) -+ || regnum_is_vxr_full (tdep, regnum) -+ || (regnum >= S390_V16_REGNUM && regnum <= S390_V31_REGNUM)) - set_value_offset (value, 0); - - return value; -@@ -410,6 +497,12 @@ s390_pseudo_register_reggroup_p (struct - if (group == save_reggroup || group == restore_reggroup) - return regnum == tdep->pc_regnum || regnum == tdep->cc_regnum; - -+ if (group == vector_reggroup) -+ return regnum_is_vxr_full (tdep, regnum); -+ -+ if (group == general_reggroup && regnum_is_vxr_full (tdep, regnum)) -+ return 0; -+ - return default_register_reggroup_p (gdbarch, regnum, group); - } - -@@ -469,6 +562,18 @@ static const struct regcache_map_entry s - { 0 } - }; - -+static const struct regcache_map_entry s390_regmap_vxrs_low[] = -+ { -+ { 16, S390_V0_LOWER_REGNUM, 8 }, -+ { 0 } -+ }; -+ -+static const struct regcache_map_entry s390_regmap_vxrs_high[] = -+ { -+ { 16, S390_V16_REGNUM, 16 }, -+ { 0 } -+ }; -+ - - /* Supply the TDB regset. Like regcache_supply_regset, but invalidate - the TDB registers unless the TDB format field is valid. */ -@@ -529,6 +634,18 @@ const struct regset s390_tdb_regset = { - regcache_collect_regset - }; - -+const struct regset s390_vxrs_low_regset = { -+ s390_regmap_vxrs_low, -+ regcache_supply_regset, -+ regcache_collect_regset -+}; -+ -+const struct regset s390_vxrs_high_regset = { -+ s390_regmap_vxrs_high, -+ regcache_supply_regset, -+ regcache_collect_regset -+}; -+ - /* Iterate over supported core file register note sections. */ - - static void -@@ -567,37 +684,54 @@ s390_iterate_over_regset_sections (struc - S390_TDB_DWORD0_REGNUM))) - cb (".reg-s390-tdb", s390_sizeof_tdbregset, &s390_tdb_regset, - "s390 TDB", cb_data); -+ -+ if (tdep->v0_full_regnum != -1) -+ { -+ cb (".reg-s390-vxrs-low", 16 * 8, &s390_vxrs_low_regset, -+ "s390 vector registers 0-15 lower half", cb_data); -+ cb (".reg-s390-vxrs-high", 16 * 16, &s390_vxrs_high_regset, -+ "s390 vector registers 16-31", cb_data); -+ } - } - - static const struct target_desc * - s390_core_read_description (struct gdbarch *gdbarch, - struct target_ops *target, bfd *abfd) - { -- asection *high_gprs = bfd_get_section_by_name (abfd, ".reg-s390-high-gprs"); -- asection *v1 = bfd_get_section_by_name (abfd, ".reg-s390-last-break"); -- asection *v2 = bfd_get_section_by_name (abfd, ".reg-s390-system-call"); - asection *section = bfd_get_section_by_name (abfd, ".reg"); - CORE_ADDR hwcap = 0; -+ int high_gprs, v1, v2, te, vx; - - target_auxv_search (target, AT_HWCAP, &hwcap); - if (!section) - return NULL; - -+ high_gprs = (bfd_get_section_by_name (abfd, ".reg-s390-high-gprs") -+ != NULL); -+ v1 = (bfd_get_section_by_name (abfd, ".reg-s390-last-break") != NULL); -+ v2 = (bfd_get_section_by_name (abfd, ".reg-s390-system-call") != NULL); -+ vx = (hwcap & HWCAP_S390_VX); -+ te = (hwcap & HWCAP_S390_TE); -+ - switch (bfd_section_size (abfd, section)) - { - case s390_sizeof_gregset: - if (high_gprs) -- return ((hwcap & HWCAP_S390_TE) ? tdesc_s390_te_linux64 : -- v2? tdesc_s390_linux64v2 : -- v1? tdesc_s390_linux64v1 : tdesc_s390_linux64); -+ return (te && vx ? tdesc_s390_tevx_linux64 : -+ vx ? tdesc_s390_vx_linux64 : -+ te ? tdesc_s390_te_linux64 : -+ v2 ? tdesc_s390_linux64v2 : -+ v1 ? tdesc_s390_linux64v1 : tdesc_s390_linux64); - else -- return (v2? tdesc_s390_linux32v2 : -- v1? tdesc_s390_linux32v1 : tdesc_s390_linux32); -+ return (v2 ? tdesc_s390_linux32v2 : -+ v1 ? tdesc_s390_linux32v1 : tdesc_s390_linux32); - - case s390x_sizeof_gregset: -- return ((hwcap & HWCAP_S390_TE) ? tdesc_s390x_te_linux64 : -- v2? tdesc_s390x_linux64v2 : -- v1? tdesc_s390x_linux64v1 : tdesc_s390x_linux64); -+ return (te && vx ? tdesc_s390x_tevx_linux64 : -+ vx ? tdesc_s390x_vx_linux64 : -+ te ? tdesc_s390x_te_linux64 : -+ v2 ? tdesc_s390x_linux64v2 : -+ v1 ? tdesc_s390x_linux64v1 : tdesc_s390x_linux64); - - default: - return NULL; -@@ -2842,6 +2976,7 @@ s390_gdbarch_init (struct gdbarch_info i - int have_linux_v1 = 0; - int have_linux_v2 = 0; - int have_tdb = 0; -+ int have_vx = 0; - int first_pseudo_reg, last_pseudo_reg; - static const char *const stap_register_prefixes[] = { "%", NULL }; - static const char *const stap_register_indirection_prefixes[] = { "(", -@@ -2901,6 +3036,14 @@ s390_gdbarch_init (struct gdbarch_info i - "tr0", "tr1", "tr2", "tr3", "tr4", "tr5", "tr6", "tr7", - "tr8", "tr9", "tr10", "tr11", "tr12", "tr13", "tr14", "tr15" - }; -+ static const char *const vxrs_low[] = { -+ "v0l", "v1l", "v2l", "v3l", "v4l", "v5l", "v6l", "v7l", "v8l", -+ "v9l", "v10l", "v11l", "v12l", "v13l", "v14l", "v15l", -+ }; -+ static const char *const vxrs_high[] = { -+ "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", -+ "v25", "v26", "v27", "v28", "v29", "v30", "v31", -+ }; - const struct tdesc_feature *feature; - int i, valid_p = 1; - -@@ -2989,6 +3132,21 @@ s390_gdbarch_init (struct gdbarch_info i - have_tdb = 1; - } - -+ /* Vector registers. */ -+ feature = tdesc_find_feature (tdesc, "org.gnu.gdb.s390.vx"); -+ if (feature) -+ { -+ for (i = 0; i < 16; i++) -+ valid_p &= tdesc_numbered_register (feature, tdesc_data, -+ S390_V0_LOWER_REGNUM + i, -+ vxrs_low[i]); -+ for (i = 0; i < 16; i++) -+ valid_p &= tdesc_numbered_register (feature, tdesc_data, -+ S390_V16_REGNUM + i, -+ vxrs_high[i]); -+ have_vx = 1; -+ } -+ - if (!valid_p) - { - tdesc_data_cleanup (tdesc_data); -@@ -3058,6 +3216,7 @@ s390_gdbarch_init (struct gdbarch_info i - set_tdesc_pseudo_register_reggroup_p (gdbarch, - s390_pseudo_register_reggroup_p); - tdesc_use_registers (gdbarch, tdesc, tdesc_data); -+ set_gdbarch_register_name (gdbarch, s390_register_name); - - /* Assign pseudo register numbers. */ - first_pseudo_reg = gdbarch_num_regs (gdbarch); -@@ -3068,6 +3227,12 @@ s390_gdbarch_init (struct gdbarch_info i - tdep->gpr_full_regnum = last_pseudo_reg; - last_pseudo_reg += 16; - } -+ tdep->v0_full_regnum = -1; -+ if (have_vx) -+ { -+ tdep->v0_full_regnum = last_pseudo_reg; -+ last_pseudo_reg += 16; -+ } - tdep->pc_regnum = last_pseudo_reg++; - tdep->cc_regnum = last_pseudo_reg++; - set_gdbarch_pc_regnum (gdbarch, tdep->pc_regnum); -@@ -3173,8 +3338,12 @@ _initialize_s390_tdep (void) - initialize_tdesc_s390_linux64v1 (); - initialize_tdesc_s390_linux64v2 (); - initialize_tdesc_s390_te_linux64 (); -+ initialize_tdesc_s390_vx_linux64 (); -+ initialize_tdesc_s390_tevx_linux64 (); - initialize_tdesc_s390x_linux64 (); - initialize_tdesc_s390x_linux64v1 (); - initialize_tdesc_s390x_linux64v2 (); - initialize_tdesc_s390x_te_linux64 (); -+ initialize_tdesc_s390x_vx_linux64 (); -+ initialize_tdesc_s390x_tevx_linux64 (); - } -Index: gdb-7.9.1/gdb/s390-linux-tdep.h -=================================================================== ---- gdb-7.9.1.orig/gdb/s390-linux-tdep.h 2015-07-10 16:18:29.000000000 +0200 -+++ gdb-7.9.1/gdb/s390-linux-tdep.h 2015-07-10 16:18:36.000000000 +0200 -@@ -29,6 +29,10 @@ - #define HWCAP_S390_TE 1024 - #endif - -+#ifndef HWCAP_S390_VX -+#define HWCAP_S390_VX 2048 -+#endif -+ - /* Register information. */ - - /* Program Status Word. */ -@@ -129,8 +133,41 @@ - #define S390_TDB_R13_REGNUM 87 - #define S390_TDB_R14_REGNUM 88 - #define S390_TDB_R15_REGNUM 89 -+/* Vector registers. */ -+#define S390_V0_LOWER_REGNUM 90 -+#define S390_V1_LOWER_REGNUM 91 -+#define S390_V2_LOWER_REGNUM 92 -+#define S390_V3_LOWER_REGNUM 93 -+#define S390_V4_LOWER_REGNUM 94 -+#define S390_V5_LOWER_REGNUM 95 -+#define S390_V6_LOWER_REGNUM 96 -+#define S390_V7_LOWER_REGNUM 97 -+#define S390_V8_LOWER_REGNUM 98 -+#define S390_V9_LOWER_REGNUM 99 -+#define S390_V10_LOWER_REGNUM 100 -+#define S390_V11_LOWER_REGNUM 101 -+#define S390_V12_LOWER_REGNUM 102 -+#define S390_V13_LOWER_REGNUM 103 -+#define S390_V14_LOWER_REGNUM 104 -+#define S390_V15_LOWER_REGNUM 105 -+#define S390_V16_REGNUM 106 -+#define S390_V17_REGNUM 107 -+#define S390_V18_REGNUM 108 -+#define S390_V19_REGNUM 109 -+#define S390_V20_REGNUM 110 -+#define S390_V21_REGNUM 111 -+#define S390_V22_REGNUM 112 -+#define S390_V23_REGNUM 113 -+#define S390_V24_REGNUM 114 -+#define S390_V25_REGNUM 115 -+#define S390_V26_REGNUM 116 -+#define S390_V27_REGNUM 117 -+#define S390_V28_REGNUM 118 -+#define S390_V29_REGNUM 119 -+#define S390_V30_REGNUM 120 -+#define S390_V31_REGNUM 121 - /* Total. */ --#define S390_NUM_REGS 90 -+#define S390_NUM_REGS 122 - - /* Special register usage. */ - #define S390_SP_REGNUM S390_R15_REGNUM -@@ -159,6 +196,8 @@ extern const struct regset s390x_last_br - extern const struct regset s390_system_call_regset; - extern const struct regset s390_tdb_regset; - #define s390_sizeof_tdbregset 0x100 -+extern const struct regset s390_vxrs_low_regset; -+extern const struct regset s390_vxrs_high_regset; - - /* GNU/Linux target descriptions. */ - extern struct target_desc *tdesc_s390_linux32; -@@ -168,9 +207,13 @@ extern struct target_desc *tdesc_s390_li - extern struct target_desc *tdesc_s390_linux64v1; - extern struct target_desc *tdesc_s390_linux64v2; - extern struct target_desc *tdesc_s390_te_linux64; -+extern struct target_desc *tdesc_s390_vx_linux64; -+extern struct target_desc *tdesc_s390_tevx_linux64; - extern struct target_desc *tdesc_s390x_linux64; - extern struct target_desc *tdesc_s390x_linux64v1; - extern struct target_desc *tdesc_s390x_linux64v2; - extern struct target_desc *tdesc_s390x_te_linux64; -+extern struct target_desc *tdesc_s390x_vx_linux64; -+extern struct target_desc *tdesc_s390x_tevx_linux64; - - #endif diff --git a/0003-S390-Add-vector-register-support-to-gdbserver.patch b/0003-S390-Add-vector-register-support-to-gdbserver.patch deleted file mode 100644 index fcbc11f..0000000 --- a/0003-S390-Add-vector-register-support-to-gdbserver.patch +++ /dev/null @@ -1,293 +0,0 @@ -Part of fate#318039 - -From bf2d68ab8c9da89a7caec2abdd2cc27c607f4a04 Mon Sep 17 00:00:00 2001 -From: Andreas Arnez -Date: Mon, 2 Mar 2015 10:57:40 +0100 -Subject: [PATCH] S390: Add vector register support to gdbserver - -On S/390 targets with vector registers, enable gdbserver to advertise -and handle the feature "org.gnu.gdb.s390.vx". - -gdb/gdbserver/ChangeLog: - - * Makefile.in (s390-vx-linux64.c, s390-tevx-linux64.c) - (s390x-vx-linux64.c, s390x-tevx-linux64.c): New rules. - (clean): Add "rm -f" for above C files. - * configure.srv (srv_regobj): Add s390-vx-linux64.o, - s390-tevx-linux64.o, s390x-vx-linux64.o, and s390x-tevx-linux64.o. - (srv_xmlfiles): Add s390-vx-linux64.xml, s390-tevx-linux64.xml, - s390x-vx-linux64.xml, s390x-tevx-linux64.xml, and s390-vx.xml. - * linux-s390-low.c (HWCAP_S390_VX): New macro. - (init_registers_s390_vx_linux64, init_registers_s390_tevx_linux64) - (init_registers_s390x_vx_linux64) - (init_registers_s390x_tevx_linux64) - (tdesc_s390_vx_linux64, tdesc_s390_tevx_linux64) - (tdesc_s390x_vx_linux64, tdesc_s390x_tevx_linux64): New extern - declarations. - (s390_fill_vxrs_low, s390_store_vxrs_low, s390_fill_vxrs_high) - (s390_store_vxrs_high): New functions. - (s390_regsets): Add entries for NT_S390_VXRS_LOW and - NT_S390_VXRS_HIGH. - (s390_arch_setup): Add logic for selecting one of the new target - descriptions. Activate the new vector regsets if applicable. - (initialize_low_arch): Also invoke init_registers_s390_vx_linux64, - init_registers_s390_tevx_linux64, init_registers_s390x_vx_linux64, - and init_registers_s390x_tevx_linux64. ---- - gdb/gdbserver/ChangeLog | 26 ++++++++++++ - gdb/gdbserver/Makefile.in | 12 +++++- - gdb/gdbserver/configure.srv | 9 ++++ - gdb/gdbserver/linux-s390-low.c | 94 ++++++++++++++++++++++++++++++++++++++++-- - 4 files changed, 137 insertions(+), 4 deletions(-) - -Index: gdb-7.9.1/gdb/gdbserver/Makefile.in -=================================================================== ---- gdb-7.9.1.orig/gdb/gdbserver/Makefile.in 2015-07-10 16:18:29.000000000 +0200 -+++ gdb-7.9.1/gdb/gdbserver/Makefile.in 2015-07-10 16:19:13.000000000 +0200 -@@ -356,7 +356,9 @@ clean: - rm -f s390-linux32.c s390-linux64.c s390x-linux64.c - rm -f s390-linux32v1.c s390-linux32v2.c s390-linux64v1.c - rm -f s390-linux64v2.c s390x-linux64v1.c s390x-linux64v2.c -- rm -f s390-te-linux32.c s390-te-linux64.c -+ rm -f s390-te-linux64.c s390x-te-linux64.c -+ rm -f s390-vx-linux64.c s390x-vx-linux64.c -+ rm -f s390-tevx-linux64.c s390x-tevx-linux64.c - rm -f tic6x-c64xp-linux.c tic6x-c64x-linux.c tic6x-c62x-linux.c - rm -f xml-builtin.c stamp-xml - rm -f i386-avx.c i386-avx-linux.c -@@ -684,6 +686,10 @@ s390-linux64v2.c : $(srcdir)/../regforma - $(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390-linux64v2.dat s390-linux64v2.c - s390-te-linux64.c : $(srcdir)/../regformats/s390-te-linux64.dat $(regdat_sh) - $(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390-te-linux64.dat s390-te-linux64.c -+s390-vx-linux64.c : $(srcdir)/../regformats/s390-vx-linux64.dat $(regdat_sh) -+ $(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390-vx-linux64.dat s390-vx-linux64.c -+s390-tevx-linux64.c : $(srcdir)/../regformats/s390-tevx-linux64.dat $(regdat_sh) -+ $(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390-tevx-linux64.dat s390-tevx-linux64.c - s390x-linux64.c : $(srcdir)/../regformats/s390x-linux64.dat $(regdat_sh) - $(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390x-linux64.dat s390x-linux64.c - s390x-linux64v1.c : $(srcdir)/../regformats/s390x-linux64v1.dat $(regdat_sh) -@@ -692,6 +698,10 @@ s390x-linux64v2.c : $(srcdir)/../regform - $(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390x-linux64v2.dat s390x-linux64v2.c - s390x-te-linux64.c : $(srcdir)/../regformats/s390x-te-linux64.dat $(regdat_sh) - $(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390x-te-linux64.dat s390x-te-linux64.c -+s390x-vx-linux64.c : $(srcdir)/../regformats/s390x-vx-linux64.dat $(regdat_sh) -+ $(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390x-vx-linux64.dat s390x-vx-linux64.c -+s390x-tevx-linux64.c : $(srcdir)/../regformats/s390x-tevx-linux64.dat $(regdat_sh) -+ $(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390x-tevx-linux64.dat s390x-tevx-linux64.c - - tic6x-c64xp-linux.c : $(srcdir)/../regformats/tic6x-c64xp-linux.dat $(regdat_sh) - $(SHELL) $(regdat_sh) $(srcdir)/../regformats/tic6x-c64xp-linux.dat tic6x-c64xp-linux.c -Index: gdb-7.9.1/gdb/gdbserver/configure.srv -=================================================================== ---- gdb-7.9.1.orig/gdb/gdbserver/configure.srv 2015-07-10 16:18:29.000000000 +0200 -+++ gdb-7.9.1/gdb/gdbserver/configure.srv 2015-07-10 16:19:13.000000000 +0200 -@@ -260,10 +260,14 @@ case "${target}" in - srv_regobj="${srv_regobj} s390-linux64v1.o" - srv_regobj="${srv_regobj} s390-linux64v2.o" - srv_regobj="${srv_regobj} s390-te-linux64.o" -+ srv_regobj="${srv_regobj} s390-vx-linux64.o" -+ srv_regobj="${srv_regobj} s390-tevx-linux64.o" - srv_regobj="${srv_regobj} s390x-linux64.o" - srv_regobj="${srv_regobj} s390x-linux64v1.o" - srv_regobj="${srv_regobj} s390x-linux64v2.o" - srv_regobj="${srv_regobj} s390x-te-linux64.o" -+ srv_regobj="${srv_regobj} s390x-vx-linux64.o" -+ srv_regobj="${srv_regobj} s390x-tevx-linux64.o" - srv_tgtobj="$srv_linux_obj linux-s390-low.o" - srv_xmlfiles="s390-linux32.xml" - srv_xmlfiles="${srv_xmlfiles} s390-linux32v1.xml" -@@ -272,16 +276,21 @@ case "${target}" in - srv_xmlfiles="${srv_xmlfiles} s390-linux64v1.xml" - srv_xmlfiles="${srv_xmlfiles} s390-linux64v2.xml" - srv_xmlfiles="${srv_xmlfiles} s390-te-linux64.xml" -+ srv_xmlfiles="${srv_xmlfiles} s390-vx-linux64.xml" -+ srv_xmlfiles="${srv_xmlfiles} s390-tevx-linux64.xml" - srv_xmlfiles="${srv_xmlfiles} s390x-linux64.xml" - srv_xmlfiles="${srv_xmlfiles} s390x-linux64v1.xml" - srv_xmlfiles="${srv_xmlfiles} s390x-linux64v2.xml" - srv_xmlfiles="${srv_xmlfiles} s390x-te-linux64.xml" -+ srv_xmlfiles="${srv_xmlfiles} s390x-vx-linux64.xml" -+ srv_xmlfiles="${srv_xmlfiles} s390x-tevx-linux64.xml" - srv_xmlfiles="${srv_xmlfiles} s390-core32.xml" - srv_xmlfiles="${srv_xmlfiles} s390-core64.xml" - srv_xmlfiles="${srv_xmlfiles} s390x-core64.xml" - srv_xmlfiles="${srv_xmlfiles} s390-acr.xml" - srv_xmlfiles="${srv_xmlfiles} s390-fpr.xml" - srv_xmlfiles="${srv_xmlfiles} s390-tdb.xml" -+ srv_xmlfiles="${srv_xmlfiles} s390-vx.xml" - srv_linux_usrregs=yes - srv_linux_regsets=yes - srv_linux_thread_db=yes -Index: gdb-7.9.1/gdb/gdbserver/linux-s390-low.c -=================================================================== ---- gdb-7.9.1.orig/gdb/gdbserver/linux-s390-low.c 2015-07-10 16:18:29.000000000 +0200 -+++ gdb-7.9.1/gdb/gdbserver/linux-s390-low.c 2015-07-10 16:19:13.000000000 +0200 -@@ -36,6 +36,10 @@ - #define HWCAP_S390_TE 1024 - #endif - -+#ifndef HWCAP_S390_VX -+#define HWCAP_S390_VX 2048 -+#endif -+ - #ifndef PTRACE_GETREGSET - #define PTRACE_GETREGSET 0x4204 - #endif -@@ -72,6 +76,14 @@ extern const struct target_desc *tdesc_s - void init_registers_s390_te_linux64 (void); - extern const struct target_desc *tdesc_s390_te_linux64; - -+/* Defined in auto-generated file s390-vx-linux64.c. */ -+void init_registers_s390_vx_linux64 (void); -+extern const struct target_desc *tdesc_s390_vx_linux64; -+ -+/* Defined in auto-generated file s390-tevx-linux64.c. */ -+void init_registers_s390_tevx_linux64 (void); -+extern const struct target_desc *tdesc_s390_tevx_linux64; -+ - /* Defined in auto-generated file s390x-linux64.c. */ - void init_registers_s390x_linux64 (void); - extern const struct target_desc *tdesc_s390x_linux64; -@@ -88,6 +100,14 @@ extern const struct target_desc *tdesc_s - void init_registers_s390x_te_linux64 (void); - extern const struct target_desc *tdesc_s390x_te_linux64; - -+/* Defined in auto-generated file s390x-vx-linux64.c. */ -+void init_registers_s390x_vx_linux64 (void); -+extern const struct target_desc *tdesc_s390x_vx_linux64; -+ -+/* Defined in auto-generated file s390x-tevx-linux64.c. */ -+void init_registers_s390x_tevx_linux64 (void); -+extern const struct target_desc *tdesc_s390x_tevx_linux64; -+ - #define s390_num_regs 52 - - static int s390_regmap[] = { -@@ -324,6 +344,46 @@ s390_store_tdb (struct regcache *regcach - supply_register (regcache, tr0 + i, (const char *) buf + 8 * (16 + i)); - } - -+static void -+s390_fill_vxrs_low (struct regcache *regcache, void *buf) -+{ -+ int v0 = find_regno (regcache->tdesc, "v0l"); -+ int i; -+ -+ for (i = 0; i < 16; i++) -+ collect_register (regcache, v0 + i, (char *) buf + 8 * i); -+} -+ -+static void -+s390_store_vxrs_low (struct regcache *regcache, const void *buf) -+{ -+ int v0 = find_regno (regcache->tdesc, "v0l"); -+ int i; -+ -+ for (i = 0; i < 16; i++) -+ supply_register (regcache, v0 + i, (const char *) buf + 8 * i); -+} -+ -+static void -+s390_fill_vxrs_high (struct regcache *regcache, void *buf) -+{ -+ int v16 = find_regno (regcache->tdesc, "v16"); -+ int i; -+ -+ for (i = 0; i < 16; i++) -+ collect_register (regcache, v16 + i, (char *) buf + 16 * i); -+} -+ -+static void -+s390_store_vxrs_high (struct regcache *regcache, const void *buf) -+{ -+ int v16 = find_regno (regcache->tdesc, "v16"); -+ int i; -+ -+ for (i = 0; i < 16; i++) -+ supply_register (regcache, v16 + i, (const char *) buf + 16 * i); -+} -+ - static struct regset_info s390_regsets[] = { - { 0, 0, 0, 0, GENERAL_REGS, s390_fill_gregset, NULL }, - /* Last break address is read-only; no fill function. */ -@@ -334,6 +394,10 @@ static struct regset_info s390_regsets[] - /* TDB is read-only. */ - { PTRACE_GETREGSET, -1, NT_S390_TDB, 0, EXTENDED_REGS, - NULL, s390_store_tdb }, -+ { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_S390_VXRS_LOW, 0, -+ EXTENDED_REGS, s390_fill_vxrs_low, s390_store_vxrs_low }, -+ { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_S390_VXRS_HIGH, 0, -+ EXTENDED_REGS, s390_fill_vxrs_high, s390_store_vxrs_high }, - { 0, 0, 0, -1, -1, NULL, NULL } - }; - -@@ -439,6 +503,8 @@ s390_arch_setup (void) - int have_regset_system_call - = s390_check_regset (pid, NT_S390_SYSTEM_CALL, 4); - int have_regset_tdb = s390_check_regset (pid, NT_S390_TDB, 256); -+ int have_regset_vxrs = s390_check_regset (pid, NT_S390_VXRS_LOW, 128) -+ && s390_check_regset (pid, NT_S390_VXRS_HIGH, 256); - - /* Assume 31-bit inferior process. */ - if (have_regset_system_call) -@@ -464,8 +530,14 @@ s390_arch_setup (void) - if (have_regset_tdb) - have_regset_tdb = - (s390_get_hwcap (tdesc_s390x_linux64v2) & HWCAP_S390_TE) != 0; -- -- if (have_regset_tdb) -+ if (have_regset_vxrs) -+ have_regset_vxrs = -+ (s390_get_hwcap (tdesc_s390x_linux64v2) & HWCAP_S390_VX) != 0; -+ -+ if (have_regset_vxrs) -+ tdesc = (have_regset_tdb ? tdesc_s390x_tevx_linux64 : -+ tdesc_s390x_vx_linux64); -+ else if (have_regset_tdb) - tdesc = tdesc_s390x_te_linux64; - else if (have_regset_system_call) - tdesc = tdesc_s390x_linux64v2; -@@ -482,8 +554,13 @@ s390_arch_setup (void) - have_hwcap_s390_high_gprs = 1; - if (have_regset_tdb) - have_regset_tdb = (s390_get_hwcap (tdesc) & HWCAP_S390_TE) != 0; -+ if (have_regset_vxrs) -+ have_regset_vxrs = (s390_get_hwcap (tdesc) & HWCAP_S390_VX) != 0; - -- if (have_regset_tdb) -+ if (have_regset_vxrs) -+ tdesc = (have_regset_tdb ? tdesc_s390_tevx_linux64 : -+ tdesc_s390_vx_linux64); -+ else if (have_regset_tdb) - tdesc = tdesc_s390_te_linux64; - else if (have_regset_system_call) - tdesc = tdesc_s390_linux64v2; -@@ -508,6 +585,13 @@ s390_arch_setup (void) - break; - case NT_S390_TDB: - regset->size = have_regset_tdb ? 256 : 0; -+ break; -+ case NT_S390_VXRS_LOW: -+ regset->size = have_regset_vxrs ? 128 : 0; -+ break; -+ case NT_S390_VXRS_HIGH: -+ regset->size = have_regset_vxrs ? 256 : 0; -+ break; - default: - break; - } -@@ -615,10 +699,14 @@ initialize_low_arch (void) - init_registers_s390_linux64v1 (); - init_registers_s390_linux64v2 (); - init_registers_s390_te_linux64 (); -+ init_registers_s390_vx_linux64 (); -+ init_registers_s390_tevx_linux64 (); - init_registers_s390x_linux64 (); - init_registers_s390x_linux64v1 (); - init_registers_s390x_linux64v2 (); - init_registers_s390x_te_linux64 (); -+ init_registers_s390x_vx_linux64 (); -+ init_registers_s390x_tevx_linux64 (); - - initialize_regsets_info (&s390_regsets_info); - #ifdef __s390x__ diff --git a/0004-S390-Vector-register-test-case.patch b/0004-S390-Vector-register-test-case.patch deleted file mode 100644 index cbd6bcd..0000000 --- a/0004-S390-Vector-register-test-case.patch +++ /dev/null @@ -1,334 +0,0 @@ -Part of fate#318039 - -From 4fa5d7b436815f58688ec9245f24fc83263364b9 Mon Sep 17 00:00:00 2001 -From: Andreas Arnez -Date: Mon, 2 Mar 2015 10:57:40 +0100 -Subject: [PATCH] S390: Vector register test case - -Add a test case for S/390 vector registers support. - -gdb/testsuite/ChangeLog: - - * gdb.arch/s390-vregs.exp: New test. - * gdb.arch/s390-vregs.S: New file. ---- - gdb/testsuite/ChangeLog | 5 + - gdb/testsuite/gdb.arch/s390-vregs.S | 96 ++++++++++++++++ - gdb/testsuite/gdb.arch/s390-vregs.exp | 202 ++++++++++++++++++++++++++++++++++ - 3 files changed, 303 insertions(+) - create mode 100644 gdb/testsuite/gdb.arch/s390-vregs.S - create mode 100644 gdb/testsuite/gdb.arch/s390-vregs.exp - -diff --git a/gdb/testsuite/gdb.arch/s390-vregs.S b/gdb/testsuite/gdb.arch/s390-vregs.S -new file mode 100644 -index 0000000..4b48a83 ---- /dev/null -+++ b/gdb/testsuite/gdb.arch/s390-vregs.S -@@ -0,0 +1,96 @@ -+/* Copyright 2015 Free Software Foundation, Inc. -+ -+ This file is part of GDB. -+ -+ 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 . */ -+ -+ .text -+ -+ /* 'check_vx': Yield SIGILL unless vector support is -+ available. Have a "pit stop" breakpoint here. */ -+ -+ .align 8 -+ .type check_vx, @function -+check_vx: -+ .cfi_startproc -+ /* vlr %v0,%v0 */ -+ .byte 0xe7,0x00,0x00,0x00,0x00,0x56 -+ br %r14 -+ .cfi_endproc -+ .size check_vx, .-check_vx -+ -+ -+ /* 'store_vrs': Store vector registers in save_area. */ -+ -+ .align 8 -+ .type store_vrs, @function -+store_vrs: -+ .cfi_startproc -+ larl %r1,save_area -+ /* vstm %v0,%v15,0(%r1) */ -+ .byte 0xe7,0x0f,0x10,0x00,0x00,0x3e -+ /* vstm %v16,%v31,256(%r1) */ -+ .byte 0xe7,0x0f,0x11,0x00,0x0c,0x3e -+ br %r14 -+ .cfi_endproc -+ .size store_vrs, .-store_vrs -+ -+ -+ /* 'change_vrs': Manipulate vector registers according to a -+ simple algorithm. */ -+ -+ .align 8 -+ .type change_vrs, @function -+change_vrs: -+ .cfi_startproc -+ lghi %r1,16 -+ lghi %r3,0xff -+1: exrl %r3,2f -+ exrl %r3,1f -+ aghi %r3,-0x11 -+ brctg %r1,1b -+ br %r14 -+ .cfi_endproc -+ /* vmlf %v0,%v0,%v0 */ -+1: .byte 0xe7,0x00,0x00,0x00,0x20,0xa2 -+ /* vmlf %v16,%v16,%v0 */ -+2: .byte 0xe7,0x00,0x00,0x00,0x2c,0xa2 -+ -+ -+ /* 'main': Perform actions according to test case logic. -+ Invoke check_vx whenever a pit stop is required. */ -+ -+ .section .text.startup,"ax",@progbits -+ .align 8 -+.globl main -+ .type main, @function -+main: -+ .cfi_startproc -+ stmg %r14,%r15,112(%r15) -+ aghi %r15,-160 -+ bras %r14,check_vx -+ bras %r14,store_vrs -+ bras %r14,check_vx -+ bras %r14,change_vrs -+ bras %r14,check_vx -+ lmg %r14,%r15,272(%r15) -+ lghi %r2,0 -+ br %r14 -+ .cfi_endproc -+ .size main, .-main -+ -+ .local save_area -+ .comm save_area,512,16 -+ -+ .section .note.GNU-stack,"",@progbits -diff --git a/gdb/testsuite/gdb.arch/s390-vregs.exp b/gdb/testsuite/gdb.arch/s390-vregs.exp -new file mode 100644 -index 0000000..8333c32 ---- /dev/null -+++ b/gdb/testsuite/gdb.arch/s390-vregs.exp -@@ -0,0 +1,202 @@ -+# Copyright 2015 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 . -+ -+# Test vector register access for s390 platforms. -+ -+if { ![istarget s390-*-*] && ![istarget s390x-*-* ] } { -+ verbose "Skipping s390 vector register tests." -+ return -+} -+ -+standard_testfile .S -+ -+if [isnative] { -+ # Create a temporary directory, to take a core dump there later. -+ set coredir [standard_output_file ${testfile}.d] -+ remote_exec build "rm -rf $coredir" -+ remote_exec build "mkdir $coredir" -+} -+ -+if { [prepare_for_testing ${testfile}.exp $testfile $srcfile] } { -+ return -1 -+} -+ -+if ![runto_main] { -+ untested "could not run to main" -+ return -1 -+} -+ -+# Run to the first vector instruction and step it. If the inferior -+# doesn't crash, we have vector support. -+ -+gdb_breakpoint "check_vx" -+gdb_continue_to_breakpoint "first vector insn" -+set before_pc 0 -+gdb_test_multiple "x/i \$pc" "get PC at vector insn" { -+ -re "(0x\\S+)\\s+\\S+\\s+vlr\\s+.*$gdb_prompt $" { -+ set before_pc $expect_out(1,string) -+ } -+} -+ -+gdb_test_multiple "stepi" "check for vector support" { -+ -re "Program received signal SIGILL,.*\r\n$gdb_prompt $" { -+ unsupported "no vector support." -+ return -+ } -+ -re "\[0-9\]+.*\r\n$gdb_prompt $" { -+ pass "vector support available" -+ } -+ -re "$gdb_prompt $" { -+ fail "no vector support (unknown error)" -+ return -+ } -+} -+ -+# Has the PC advanced by the expected amount? The kernel may do -+# something special for the first vector insn in the process. -+ -+set after_pc 0 -+gdb_test_multiple "x/i \$pc" "get PC after vector insn" { -+ -re "(0x\\S+)\\s+.*$gdb_prompt $" { -+ set after_pc $expect_out(1,string) -+ } -+} -+ -+if [expr $before_pc + 6 != $after_pc] { -+ fail "stepping first vector insn" -+} -+ -+# Lift the core file limit, if possible, and change into the temporary -+# directory. -+ -+if { $coredir != "" } { -+ gdb_test {print setrlimit (4, &(unsigned long [2]){~0UL, ~0UL})} \ -+ " = .*" "setrlimit" -+ gdb_test "print chdir (\"${coredir}\")" " = 0" "chdir" -+} -+ -+# Initialize all vector registers with GDB "set" commands, using -+# distinct values. Handle left and right halves separately, in -+# pseudo-random order. -+ -+set a_high 1 -+set a_low 2 -+set b_high 3 -+set b_low 5 -+ -+set a [expr ($a_high << 32) | $a_low] -+set b [expr ($b_high << 32) | $b_low] -+ -+for {set j 0} {$j < 32} {incr j 1} { -+ set i [expr 17 * $j % 32] -+ gdb_test_no_output \ -+ "set \$v$i.v2_int64\[0\] = [expr $a * ($i + 1)]" \ -+ "set v$i left" -+ set i [expr 19 * (31 - $j) % 32] -+ gdb_test_no_output \ -+ "set \$v$i.v2_int64\[1\] = [expr $b * (32 - $i)]" \ -+ "set v$i right" -+} -+ -+# Verify a vector register's union members. -+ -+gdb_test "info register v0 v31" \ -+ "v4_float .* v2_double .* v16_int8 .* v8_int16 .* v4_int32 .* v2_int64 .* uint128\ -+ .*v4_float .* v2_double .* v16_int8 .* v8_int16 .* v4_int32 .* v2_int64 .* uint128 .*" -+ -+# Let the inferior store all vector registers in a buffer, then dump -+# the buffer and check it. -+ -+gdb_continue_to_breakpoint "store vrs" -+set vregs [capture_command_output "x/64xg &save_area" ""] -+ -+set i 0 -+foreach {- left right} [regexp -all -inline -line {^.*:\s+(\w+)\s+(\w+)} $vregs] { -+ if [expr $left != $a * ($i + 1) || $right != $b * (32 - $i)] { -+ fail "verify \$v$i after set" -+ } -+ if { $i < 16 } { -+ # Check that the FP register was updated accordingly. -+ gdb_test "info register f$i" "raw ${left}.*" -+ } -+ incr i 1 -+} -+ -+if { $i != 32 } { -+ fail "dump save area (bad output)" -+} -+ -+# Let the inferior change all VRs according to a simple algorithm, -+# then print all VRs and compare their values with our result of the -+# same algorithm. -+ -+gdb_continue_to_breakpoint "change vrs" -+set vregs [capture_command_output "info registers vector" ""] -+ -+set j 1 -+foreach {- r i val} [regexp -all -inline -line \ -+ {^(\D*)(\d+)\s+.*?uint128 = 0x([0-9a-f]+?)} $vregs] { -+ if { $r ne "v" } { -+ fail "info registers vector: bad line $j" -+ } elseif { $val ne [format %08x%08x%08x%08x \ -+ [expr $a_high * ($i + 1) * $a_high ] \ -+ [expr $a_low * ($i + 1) * $a_low ] \ -+ [expr $b_high * (32 - $i) * $b_high * 32] \ -+ [expr $b_low * (32 - $i) * $b_low * 32] ] } { -+ fail "compare \$v$i" -+ } -+ incr j 1 -+} -+ -+if { $j != 33 } { -+ fail "info registers vector" -+} -+ -+if { $coredir == "" } { -+ return -+} -+ -+# Take a core dump. -+ -+gdb_test "signal SIGABRT" "Program terminated with signal SIGABRT, .*" -+gdb_exit -+ -+# Find the core file and rename it (avoid accumulating core files). -+ -+set cores [glob -nocomplain -directory $coredir *core*] -+if {[llength $cores] != 1} { -+ untested "core file not found" -+ remote_exec build "rm -rf $coredir" -+ return -1 -+} -+set destcore [standard_output_file ${testfile}.core] -+remote_exec build "mv [file join $coredir [lindex $cores 0]] $destcore" -+remote_exec build "rm -rf $coredir" -+ -+# Restart gdb and load the core file. Compare the VRs. -+ -+clean_restart ${testfile} -+ -+with_test_prefix "core" { -+ set core_loaded [gdb_core_cmd $destcore "load"] -+ if { $core_loaded != -1 } { -+ set vregs_from_core [capture_command_output "info registers vector" ""] -+ if { $vregs_from_core eq $vregs } { -+ pass "compare vector registers" -+ } else { -+ fail "vector registers mismatch" -+ } -+ } -+} --- -1.8.1.4 - diff --git a/0005-S390-Name-invisible-registers-with-the-empty-string-.patch b/0005-S390-Name-invisible-registers-with-the-empty-string-.patch deleted file mode 100644 index f2f2cb1..0000000 --- a/0005-S390-Name-invisible-registers-with-the-empty-string-.patch +++ /dev/null @@ -1,47 +0,0 @@ -Part of fate#318039 - -From 87de11c05253566abb04479a4842cc934d0c822e Mon Sep 17 00:00:00 2001 -From: Andreas Arnez -Date: Wed, 4 Mar 2015 10:40:41 +0100 -Subject: [PATCH] S390: Name "invisible" registers with the empty string - instead of NULL - -When adding vector register support to GDB, s390_register_name() was -added to suppress the right halves of the first 16 vector registers. -However, that function returned NULL instead of an empty string in such -a case. This leads to an incomplete list of registers returned by -"complete info registers ", because completion stops at the first NULL -return value from user_reg_map_regnum_to_name(). - -gdb/ChangeLog: - - * s390-linux-tdep.c (s390_register_name): Return empty string - instead of NULL for registers that shouldn't be visible. ---- - gdb/ChangeLog | 5 +++++ - gdb/s390-linux-tdep.c | 6 +++--- - 2 files changed, 8 insertions(+), 3 deletions(-) - -Index: gdb-7.9.1/gdb/s390-linux-tdep.c -=================================================================== ---- gdb-7.9.1.orig/gdb/s390-linux-tdep.c 2015-07-10 16:18:36.000000000 +0200 -+++ gdb-7.9.1/gdb/s390-linux-tdep.c 2015-07-10 16:19:20.000000000 +0200 -@@ -263,15 +263,15 @@ regnum_is_vxr_full (struct gdbarch_tdep - && regnum <= tdep->v0_full_regnum + 15); - } - --/* Return the name of register REGNO. Return NULL for registers that -- shouldn't be visible. */ -+/* Return the name of register REGNO. Return the empty string for -+ registers that shouldn't be visible. */ - - static const char * - s390_register_name (struct gdbarch *gdbarch, int regnum) - { - if (regnum >= S390_V0_LOWER_REGNUM - && regnum <= S390_V15_LOWER_REGNUM) -- return NULL; -+ return ""; - return tdesc_register_name (gdbarch, regnum); - } - diff --git a/gdb-6.3-gstack-20050411.patch b/gdb-6.3-gstack-20050411.patch index 226e933..e4033d4 100644 --- a/gdb-6.3-gstack-20050411.patch +++ b/gdb-6.3-gstack-20050411.patch @@ -97,7 +97,7 @@ Index: gdb-7.7/gdb/gstack.sh + fi +fi + -+GDB=${GDB:-/usr/bin/gdb} ++GDB=${GDB:-gdb} + +# Run GDB, strip out unwanted noise. +# --readnever is no longer used since .gdb_index is now in use. diff --git a/gdb-6.3-readnever-20050907.patch b/gdb-6.3-readnever-20050907.patch index 08c6c43..0a904de 100644 --- a/gdb-6.3-readnever-20050907.patch +++ b/gdb-6.3-readnever-20050907.patch @@ -11,10 +11,10 @@ * gdb.texinfo (File Options): Document --readnever. -Index: gdb-7.8.50.20141228/gdb/doc/gdb.texinfo +Index: gdb-7.9.50.20150520/gdb/doc/gdb.texinfo =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/doc/gdb.texinfo 2015-01-01 17:01:08.308881292 +0100 -+++ gdb-7.8.50.20141228/gdb/doc/gdb.texinfo 2015-01-01 17:01:10.302880126 +0100 +--- gdb-7.9.50.20150520.orig/gdb/doc/gdb.texinfo 2015-05-31 16:34:58.436379663 +0200 ++++ gdb-7.9.50.20150520/gdb/doc/gdb.texinfo 2015-05-31 16:35:03.452416381 +0200 @@ -1032,6 +1032,12 @@ Read each symbol file's entire symbol ta the default, which is to read it incrementally as it is needed. This makes startup slower, but makes future operations faster. @@ -28,19 +28,19 @@ Index: gdb-7.8.50.20141228/gdb/doc/gdb.texinfo @end table @node Mode Options -Index: gdb-7.8.50.20141228/gdb/main.c +Index: gdb-7.9.50.20150520/gdb/main.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/main.c 2015-01-01 17:01:08.312881290 +0100 -+++ gdb-7.8.50.20141228/gdb/main.c 2015-01-01 17:01:10.303880125 +0100 -@@ -590,6 +590,7 @@ captured_main (void *data) - {"xdb", no_argument, &xdb_commands, 1}, +--- gdb-7.9.50.20150520.orig/gdb/main.c 2015-05-31 16:34:58.439379685 +0200 ++++ gdb-7.9.50.20150520/gdb/main.c 2015-05-31 16:35:20.547541518 +0200 +@@ -604,6 +604,7 @@ captured_main (void *data) + {"tui", no_argument, 0, OPT_TUI}, {"dbx", no_argument, &dbx_commands, 1}, {"readnow", no_argument, &readnow_symbol_files, 1}, + {"readnever", no_argument, &readnever_symbol_files, 1}, {"r", no_argument, &readnow_symbol_files, 1}, {"quiet", no_argument, &quiet, 1}, {"q", no_argument, &quiet, 1}, -@@ -1245,6 +1246,7 @@ Selection of debuggee and its files:\n\n +@@ -1253,6 +1254,7 @@ Selection of debuggee and its files:\n\n --se=FILE Use FILE as symbol file and executable file.\n\ --symbols=SYMFILE Read symbols from SYMFILE.\n\ --readnow Fully read symbol files on first access.\n\ @@ -48,10 +48,10 @@ Index: gdb-7.8.50.20141228/gdb/main.c --write Set writing into executable and core files.\n\n\ "), stream); fputs_unfiltered (_("\ -Index: gdb-7.8.50.20141228/gdb/symfile.c +Index: gdb-7.9.50.20150520/gdb/symfile.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/symfile.c 2015-01-01 17:01:08.313881289 +0100 -+++ gdb-7.8.50.20141228/gdb/symfile.c 2015-01-01 17:01:10.304880125 +0100 +--- gdb-7.9.50.20150520.orig/gdb/symfile.c 2015-05-31 16:34:58.440379692 +0200 ++++ gdb-7.9.50.20150520/gdb/symfile.c 2015-05-31 16:35:03.454416395 +0200 @@ -80,6 +80,7 @@ static void clear_symtab_users_cleanup ( /* Global variables owned by this file. */ @@ -60,10 +60,10 @@ Index: gdb-7.8.50.20141228/gdb/symfile.c /* Functions this file defines. */ -Index: gdb-7.8.50.20141228/gdb/dwarf2read.c +Index: gdb-7.9.50.20150520/gdb/dwarf2read.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/dwarf2read.c 2015-01-01 17:01:08.319881285 +0100 -+++ gdb-7.8.50.20141228/gdb/dwarf2read.c 2015-01-01 17:01:26.888870511 +0100 +--- gdb-7.9.50.20150520.orig/gdb/dwarf2read.c 2015-05-31 16:34:58.446379736 +0200 ++++ gdb-7.9.50.20150520/gdb/dwarf2read.c 2015-05-31 16:35:03.459416432 +0200 @@ -69,6 +69,7 @@ #include "source.h" #include "filestuff.h" @@ -72,7 +72,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c #include #include -@@ -1989,7 +1990,8 @@ dwarf2_has_info (struct objfile *objfile +@@ -2050,7 +2051,8 @@ dwarf2_has_info (struct objfile *objfile (void *) names); dwarf2_per_objfile->objfile = objfile; } @@ -82,10 +82,10 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c && dwarf2_per_objfile->info.s.asection != NULL && !dwarf2_per_objfile->abbrev.is_virtual && dwarf2_per_objfile->abbrev.s.asection != NULL); -Index: gdb-7.8.50.20141228/gdb/top.h +Index: gdb-7.9.50.20150520/gdb/top.h =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/top.h 2015-01-01 17:01:08.320881284 +0100 -+++ gdb-7.8.50.20141228/gdb/top.h 2015-01-01 17:01:10.310880121 +0100 +--- gdb-7.9.50.20150520.orig/gdb/top.h 2015-05-31 16:34:58.448379751 +0200 ++++ gdb-7.9.50.20150520/gdb/top.h 2015-05-31 16:35:03.459416432 +0200 @@ -67,6 +67,7 @@ extern void set_prompt (const char *s); /* From random places. */ diff --git a/gdb-6.3-test-pie-20050107.patch b/gdb-6.3-test-pie-20050107.patch index 05f7753..10708de 100644 --- a/gdb-6.3-test-pie-20050107.patch +++ b/gdb-6.3-test-pie-20050107.patch @@ -1,40 +1,39 @@ -Index: gdb-7.8.50.20141228/gdb/testsuite/configure.ac +Index: gdb-7.9.50.20150520/gdb/testsuite/configure.ac =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/testsuite/configure.ac 2015-01-01 17:00:26.123908948 +0100 -+++ gdb-7.8.50.20141228/gdb/testsuite/configure.ac 2015-01-01 17:00:43.168897773 +0100 -@@ -106,6 +106,6 @@ AC_OUTPUT([Makefile \ - gdb.hp/gdb.aCC/Makefile gdb.hp/gdb.compat/Makefile \ - gdb.hp/gdb.defects/Makefile gdb.guile/Makefile gdb.linespec/Makefile \ +--- gdb-7.9.50.20150520.orig/gdb/testsuite/configure.ac 2015-05-31 16:34:02.396969450 +0200 ++++ gdb-7.9.50.20150520/gdb/testsuite/configure.ac 2015-05-31 16:34:33.443196711 +0200 +@@ -114,5 +114,5 @@ AC_OUTPUT([Makefile \ + gdb.guile/Makefile gdb.linespec/Makefile \ gdb.mi/Makefile gdb.modula2/Makefile gdb.multi/Makefile \ -- gdb.objc/Makefile gdb.opencl/Makefile gdb.opt/Makefile gdb.pascal/Makefile \ -+ gdb.objc/Makefile gdb.opencl/Makefile gdb.opt/Makefile gdb.pascal/Makefile gdb.pie/Makefile \ - gdb.perf/Makefile gdb.python/Makefile gdb.reverse/Makefile gdb.stabs/Makefile \ + gdb.objc/Makefile gdb.opencl/Makefile gdb.opt/Makefile gdb.pascal/Makefile \ +- gdb.perf/Makefile gdb.python/Makefile gdb.reverse/Makefile gdb.stabs/Makefile \ ++ gdb.perf/Makefile gdb.pie/Makefile gdb.python/Makefile gdb.reverse/Makefile gdb.stabs/Makefile \ gdb.threads/Makefile gdb.trace/Makefile gdb.xml/Makefile]) -Index: gdb-7.8.50.20141228/gdb/testsuite/configure +Index: gdb-7.9.50.20150520/gdb/testsuite/configure =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/testsuite/configure 2015-01-01 17:00:26.124908947 +0100 -+++ gdb-7.8.50.20141228/gdb/testsuite/configure 2015-01-01 17:00:59.467887088 +0100 -@@ -3458,7 +3458,7 @@ if test "${build}" = "${host}" -a "${hos - fi +--- gdb-7.9.50.20150520.orig/gdb/testsuite/configure 2015-05-31 16:33:53.154901798 +0200 ++++ gdb-7.9.50.20150520/gdb/testsuite/configure 2015-05-31 16:34:48.654308057 +0200 +@@ -3514,7 +3514,7 @@ program_transform_name=`$as_echo "$progr + ac_config_files="$ac_config_files lib/pdtrace" --ac_config_files="$ac_config_files Makefile gdb.ada/Makefile gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile gdb.btrace/Makefile gdb.cell/Makefile gdb.compile/Makefile gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile gdb.dlang/Makefile gdb.fortran/Makefile gdb.gdb/Makefile gdb.go/Makefile gdb.server/Makefile gdb.java/Makefile gdb.hp/Makefile gdb.hp/gdb.objdbg/Makefile gdb.hp/gdb.base-hp/Makefile gdb.hp/gdb.aCC/Makefile gdb.hp/gdb.compat/Makefile gdb.hp/gdb.defects/Makefile gdb.guile/Makefile gdb.linespec/Makefile gdb.mi/Makefile gdb.modula2/Makefile gdb.multi/Makefile gdb.objc/Makefile gdb.opencl/Makefile gdb.opt/Makefile gdb.pascal/Makefile gdb.perf/Makefile gdb.python/Makefile gdb.reverse/Makefile gdb.stabs/Makefile gdb.threads/Makefile gdb.trace/Makefile gdb.xml/Makefile" -+ac_config_files="$ac_config_files Makefile gdb.ada/Makefile gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile gdb.btrace/Makefile gdb.cell/Makefile gdb.compile/Makefile gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile gdb.dlang/Makefile gdb.fortran/Makefile gdb.gdb/Makefile gdb.go/Makefile gdb.server/Makefile gdb.java/Makefile gdb.hp/Makefile gdb.hp/gdb.objdbg/Makefile gdb.hp/gdb.base-hp/Makefile gdb.hp/gdb.aCC/Makefile gdb.hp/gdb.compat/Makefile gdb.hp/gdb.defects/Makefile gdb.guile/Makefile gdb.linespec/Makefile gdb.mi/Makefile gdb.modula2/Makefile gdb.multi/Makefile gdb.objc/Makefile gdb.opencl/Makefile gdb.opt/Makefile gdb.pascal/Makefile gdb.pie/Makefile gdb.perf/Makefile gdb.python/Makefile gdb.reverse/Makefile gdb.stabs/Makefile gdb.threads/Makefile gdb.trace/Makefile gdb.xml/Makefile" +-ac_config_files="$ac_config_files Makefile gdb.ada/Makefile gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile gdb.btrace/Makefile gdb.cell/Makefile gdb.compile/Makefile gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile gdb.dlang/Makefile gdb.fortran/Makefile gdb.gdb/Makefile gdb.go/Makefile gdb.server/Makefile gdb.java/Makefile gdb.guile/Makefile gdb.linespec/Makefile gdb.mi/Makefile gdb.modula2/Makefile gdb.multi/Makefile gdb.objc/Makefile gdb.opencl/Makefile gdb.opt/Makefile gdb.pascal/Makefile gdb.perf/Makefile gdb.python/Makefile gdb.reverse/Makefile gdb.stabs/Makefile gdb.threads/Makefile gdb.trace/Makefile gdb.xml/Makefile" ++ac_config_files="$ac_config_files Makefile gdb.ada/Makefile gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile gdb.btrace/Makefile gdb.cell/Makefile gdb.compile/Makefile gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile gdb.dlang/Makefile gdb.fortran/Makefile gdb.gdb/Makefile gdb.go/Makefile gdb.server/Makefile gdb.java/Makefile gdb.guile/Makefile gdb.linespec/Makefile gdb.mi/Makefile gdb.modula2/Makefile gdb.multi/Makefile gdb.objc/Makefile gdb.opencl/Makefile gdb.opt/Makefile gdb.pascal/Makefile gdb.perf/Makefile gdb.pie/Makefile gdb.python/Makefile gdb.reverse/Makefile gdb.stabs/Makefile gdb.threads/Makefile gdb.trace/Makefile gdb.xml/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure -@@ -4190,6 +4190,7 @@ do - "gdb.opencl/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.opencl/Makefile" ;; +@@ -4242,6 +4242,7 @@ do "gdb.opt/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.opt/Makefile" ;; "gdb.pascal/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.pascal/Makefile" ;; -+ "gdb.pie/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.pie/Makefile" ;; "gdb.perf/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.perf/Makefile" ;; ++ "gdb.pie/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.pie/Makefile" ;; "gdb.python/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.python/Makefile" ;; "gdb.reverse/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.reverse/Makefile" ;; -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/attach.c + "gdb.stabs/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.stabs/Makefile" ;; +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/attach.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/attach.c 2015-01-01 17:00:43.169897773 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/attach.c 2015-05-31 16:34:02.398969465 +0200 @@ -0,0 +1,20 @@ +/* This program is intended to be started outside of gdb, and then + attached to by gdb. Thus, it simply spins in a loop. The loop @@ -56,10 +55,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/attach.c + } + return 0; +} -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/attach2.c +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/attach2.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/attach2.c 2015-01-01 17:00:43.170897772 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/attach2.c 2015-05-31 16:34:02.398969465 +0200 @@ -0,0 +1,24 @@ +/* This program is intended to be started outside of gdb, and then + attached to by gdb. Thus, it simply spins in a loop. The loop @@ -85,10 +84,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/attach2.c + } + return (0); +} -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/break.c +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/break.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/break.c 2015-01-01 17:00:43.170897772 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/break.c 2015-05-31 16:34:02.399969472 +0200 @@ -0,0 +1,146 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -236,10 +235,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/break.c + } + return 0; +} -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/break1.c +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/break1.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/break1.c 2015-01-01 17:00:43.170897772 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/break1.c 2015-05-31 16:34:02.399969472 +0200 @@ -0,0 +1,44 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -285,10 +284,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/break1.c +void marker3 (a, b) char *a, *b; {} /* set breakpoint 18 here */ +void marker4 (d) long d; {} /* set breakpoint 13 here */ +#endif -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/coremaker.c +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/coremaker.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/coremaker.c 2015-01-01 17:00:43.170897772 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/coremaker.c 2015-05-31 16:34:02.399969472 +0200 @@ -0,0 +1,142 @@ +/* Copyright 1992, 1993, 1994, 1995, 1996, 1999 + Free Software Foundation, Inc. @@ -432,10 +431,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/coremaker.c + return 0; +} + -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/attach.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/attach.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/attach.exp 2015-01-01 17:00:43.171897771 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/attach.exp 2015-05-31 16:34:02.400969480 +0200 @@ -0,0 +1,417 @@ +# Copyright 1997, 1999, 2002 Free Software Foundation, Inc. + @@ -854,10 +853,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/attach.exp +do_call_attach_tests + +return 0 -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/break.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/break.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/break.exp 2015-01-01 17:00:43.172897771 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/break.exp 2015-05-31 16:34:02.401969487 +0200 @@ -0,0 +1,962 @@ +# Copyright 1988, 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2002, 2003, 2004 @@ -1821,10 +1820,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/break.exp + send_gdb "set args main\n" + gdb_expect -re ".*$gdb_prompt $" {} +} -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/corefile.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/corefile.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/corefile.exp 2015-01-01 17:00:43.172897771 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/corefile.exp 2015-05-31 16:34:02.401969487 +0200 @@ -0,0 +1,233 @@ +# Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 +# Free Software Foundation, Inc. @@ -2059,10 +2058,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/corefile.exp +gdb_test "up" "#\[0-9\]* *\[0-9xa-fH'\]* in .* \\(.*\\).*" "up in corefile.exp (reinit)" + +gdb_test "core" "No core file now." -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/Makefile.in +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/Makefile.in =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.pie/Makefile.in 2015-01-01 17:00:43.172897771 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.pie/Makefile.in 2015-05-31 16:34:02.401969487 +0200 @@ -0,0 +1,19 @@ +VPATH = @srcdir@ +srcdir = @srcdir@ diff --git a/gdb-6.5-bz190810-gdbserver-arch-advice.patch b/gdb-6.5-bz190810-gdbserver-arch-advice.patch deleted file mode 100644 index b6a6437..0000000 --- a/gdb-6.5-bz190810-gdbserver-arch-advice.patch +++ /dev/null @@ -1,28 +0,0 @@ -https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=190810 - - -2006-09-26 Jan Kratochvil - - * remote.c (remote_wait): Suggestion on crash due to nonmatching target. - (remote_async_wait): Likewise. - - -Index: gdb-6.8.50.20090818/gdb/remote.c -=================================================================== ---- gdb-6.8.50.20090818.orig/gdb/remote.c 2009-08-18 21:00:35.000000000 +0200 -+++ gdb-6.8.50.20090818/gdb/remote.c 2009-08-18 21:04:46.000000000 +0200 -@@ -4408,8 +4408,13 @@ Packet: '%s'\n"), - VEC_safe_push (cached_reg_t, event->regcache, &cached_reg); - } - -+ /* It may also occur on amd64 which defaults to 32-bit i386 -+ target. gdbserver(1) is not aware of the `set architecture' -+ name itself as it is not using libbfd. */ - if (*p != ';') -- error (_("Remote register badly formatted: %s\nhere: %s"), -+ error (_("Remote register badly formatted: %s\nhere: %s" -+ "\nTry to load the executable by `file' first," -+ "\nyou may also check `set/show architecture'."), - buf, p); - ++p; - } diff --git a/gdb-6.6-buildid-locate-core-as-arg.patch b/gdb-6.6-buildid-locate-core-as-arg.patch index 0e6dcf4..9db3589 100644 --- a/gdb-6.6-buildid-locate-core-as-arg.patch +++ b/gdb-6.6-buildid-locate-core-as-arg.patch @@ -58,10 +58,10 @@ Http://sourceware.org/ml/gdb-patches/2010-01/msg00517.html * exec.c (exec_file_attach): Print a more useful error message if the user did "gdb core". -Index: gdb-7.8.50.20141228/gdb/exec.c +Index: gdb-7.9.50.20150531/gdb/exec.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/exec.c 2015-01-03 23:18:38.097427908 +0100 -+++ gdb-7.8.50.20141228/gdb/exec.c 2015-01-03 23:19:02.448556391 +0100 +--- gdb-7.9.50.20150531.orig/gdb/exec.c 2015-05-31 03:48:29.000000000 +0200 ++++ gdb-7.9.50.20150531/gdb/exec.c 2015-05-31 20:07:35.092878685 +0200 @@ -35,6 +35,7 @@ #include "progspace.h" #include "gdb_bfd.h" @@ -70,7 +70,7 @@ Index: gdb-7.8.50.20141228/gdb/exec.c #include #include "readline/readline.h" -@@ -222,12 +223,27 @@ exec_file_attach (const char *filename, +@@ -298,12 +299,27 @@ exec_file_attach (const char *filename, if (!bfd_check_format_matches (exec_bfd, bfd_object, &matching)) { @@ -101,11 +101,11 @@ Index: gdb-7.8.50.20141228/gdb/exec.c } if (build_section_table (exec_bfd, §ions, §ions_end)) -Index: gdb-7.8.50.20141228/gdb/main.c +Index: gdb-7.9.50.20150531/gdb/main.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/main.c 2015-01-03 23:18:38.098427913 +0100 -+++ gdb-7.8.50.20141228/gdb/main.c 2015-01-03 23:22:10.157546792 +0100 -@@ -426,6 +426,36 @@ typedef struct cmdarg { +--- gdb-7.9.50.20150531.orig/gdb/main.c 2015-05-31 20:07:34.183872824 +0200 ++++ gdb-7.9.50.20150531/gdb/main.c 2015-05-31 20:10:05.095845935 +0200 +@@ -435,6 +435,37 @@ typedef struct cmdarg { /* Define type VEC (cmdarg_s). */ DEF_VEC_O (cmdarg_s); @@ -120,11 +120,11 @@ Index: gdb-7.8.50.20141228/gdb/main.c + + gdb_assert (exec_bfd == NULL); + -+ TRY_CATCH (e, RETURN_MASK_ALL) ++ TRY + { + exec_file_attach (filename, from_tty); + } -+ if (e.reason < 0) ++ CATCH (e, RETURN_MASK_ALL) + { + if (e.error == IS_CORE_ERROR) + { @@ -137,12 +137,13 @@ Index: gdb-7.8.50.20141228/gdb/main.c + } + throw_exception (e); + } ++ END_CATCH +} + static int captured_main (void *data) { -@@ -910,6 +940,8 @@ captured_main (void *data) +@@ -923,6 +954,8 @@ captured_main (void *data) { symarg = argv[optind]; execarg = argv[optind]; @@ -151,7 +152,7 @@ Index: gdb-7.8.50.20141228/gdb/main.c optind++; } -@@ -1069,11 +1101,26 @@ captured_main (void *data) +@@ -1080,11 +1113,25 @@ captured_main (void *data) && symarg != NULL && strcmp (execarg, symarg) == 0) { @@ -171,23 +172,22 @@ Index: gdb-7.8.50.20141228/gdb/main.c open it, better only print one error message. - catch_command_errors returns non-zero on success! */ - if (catch_command_errors_const (exec_file_attach, execarg, -- !batch_flag, RETURN_MASK_ALL)) +- !batch_flag)) + catch_command_errors returns non-zero on success! + Do not load EXECARG as a symbol file if it has been already processed + as a core file. */ -+ if (catch_command_errors_const (func, execarg, !batch_flag, -+ RETURN_MASK_ALL) ++ if (catch_command_errors_const (func, execarg, !batch_flag) + && core_bfd == NULL) catch_command_errors_const (symbol_file_add_main, symarg, - !batch_flag, RETURN_MASK_ALL); + !batch_flag); } -Index: gdb-7.8.50.20141228/gdb/common/common-exceptions.h +Index: gdb-7.9.50.20150531/gdb/common/common-exceptions.h =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/common/common-exceptions.h 2015-01-03 23:18:38.097427908 +0100 -+++ gdb-7.8.50.20141228/gdb/common/common-exceptions.h 2015-01-03 23:19:02.449556396 +0100 -@@ -99,6 +99,9 @@ enum errors { - /* Requested feature, method, mechanism, etc. is not supported. */ - NOT_SUPPORTED_ERROR, +--- gdb-7.9.50.20150531.orig/gdb/common/common-exceptions.h 2015-05-31 03:48:29.000000000 +0200 ++++ gdb-7.9.50.20150531/gdb/common/common-exceptions.h 2015-05-31 20:07:35.093878692 +0200 +@@ -105,6 +105,9 @@ enum errors { + "_ERROR" is appended to the name. */ + MAX_COMPLETIONS_REACHED_ERROR, + /* Attempt to load a core file as executable. */ + IS_CORE_ERROR, diff --git a/gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch b/gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch index dbb0395..b62f90a 100644 --- a/gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch +++ b/gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch @@ -15,10 +15,10 @@ Comments by Sergio Durigan Junior : NULL after it is free'd, otherwise the code below thinks that it is still valid and doesn't print the necessary warning ("Try: yum install ..."). -Index: gdb-7.7/gdb/testsuite/gdb.base/rhbz981154-misleading-yum-install-warning.exp +Index: gdb-7.9.90.20150709/gdb/testsuite/gdb.base/rhbz981154-misleading-yum-install-warning.exp =================================================================== ---- /dev/null -+++ gdb-7.7/gdb/testsuite/gdb.base/rhbz981154-misleading-yum-install-warning.exp +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-7.9.90.20150709/gdb/testsuite/gdb.base/rhbz981154-misleading-yum-install-warning.exp 2015-07-09 22:22:26.278304653 +0200 @@ -0,0 +1,97 @@ +# Copyright (C) 2014 Free Software Foundation, Inc. + @@ -75,7 +75,7 @@ Index: gdb-7.7/gdb/testsuite/gdb.base/rhbz981154-misleading-yum-install-warning. +# Move the binfile to a temporary name +remote_exec build "mv $binfile ${binfile}.old" + -+# Reinitialize GDB and see if we get a yum warning ++# Reinitialize GDB and see if we get a yum/dnf warning +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir @@ -88,8 +88,8 @@ Index: gdb-7.7/gdb/testsuite/gdb.base/rhbz981154-misleading-yum-install-warning. + "set debug-file-directory" + + gdb_test "core-file ${objdir}/${subdir}/gcore.test" \ -+ "Missing separate debuginfo for the main executable file\r\nTry: yum --enablerepo='\\*debug\\*' install $objdir/$subdir/$build_id_without_debug\r\n.*" \ -+ "test first yum warning" ++ "Missing separate debuginfo for the main executable file\r\nTry: (yum|dnf) --enablerepo='\\*debug\\*' install $objdir/$subdir/$build_id_without_debug\r\n.*" \ ++ "test first yum/dnf warning" +} + +# Now we define and create our .build-id @@ -98,7 +98,7 @@ Index: gdb-7.7/gdb/testsuite/gdb.base/rhbz981154-misleading-yum-install-warning. +# exist. +remote_exec build "ln -s $binfile ${objdir}/${subdir}/${build_id_without_debug}" + -+# Reinitialize GDB to get the second yum warning ++# Reinitialize GDB to get the second yum/dnf warning +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir @@ -111,21 +111,25 @@ Index: gdb-7.7/gdb/testsuite/gdb.base/rhbz981154-misleading-yum-install-warning. + "set debug-file-directory" + + gdb_test "core-file ${objdir}/${subdir}/gcore.test" \ -+ "Missing separate debuginfo for the main executable file\r\nTry: yum --enablerepo='\\*debug\\*' install $binfile\r\n.*" \ -+ "test second yum warning" ++ "Missing separate debuginfo for the main executable file\r\nTry: (yum|dnf) --enablerepo='\\*debug\\*' install $binfile\r\n.*" \ ++ "test second yum/dnf warning" +} + +# Leaving the link there will cause breakage in the next run. +remote_exec build "rm -f ${objdir}/${subdir}/${build_id_without_debug}" -Index: gdb-7.7/gdb/build-id.c +Index: gdb-7.9.90.20150709/gdb/build-id.c =================================================================== ---- gdb-7.7.orig/gdb/build-id.c -+++ gdb-7.7/gdb/build-id.c -@@ -588,6 +588,7 @@ build_id_to_debug_bfd (size_t build_id_l - if (abfd == NULL) - { - xfree (filename); -+ filename = NULL; - continue; - } +--- gdb-7.9.90.20150709.orig/gdb/build-id.c 2015-07-09 22:22:26.278304653 +0200 ++++ gdb-7.9.90.20150709/gdb/build-id.c 2015-07-09 22:22:51.398502329 +0200 +@@ -589,7 +589,10 @@ build_id_to_debug_bfd (size_t build_id_l + do_cleanups (inner); + if (abfd == NULL) +- continue; ++ { ++ filename = NULL; ++ continue; ++ } + + if (build_id_verify (abfd, build_id_len, build_id)) + break; diff --git a/gdb-6.6-buildid-locate-rpm-suse.patch b/gdb-6.6-buildid-locate-rpm-suse.patch index 8f5d559..7e2eb72 100644 --- a/gdb-6.6-buildid-locate-rpm-suse.patch +++ b/gdb-6.6-buildid-locate-rpm-suse.patch @@ -1,8 +1,8 @@ -Index: gdb-7.9.1/gdb/build-id.c +Index: gdb-7.10.1/gdb/build-id.c =================================================================== ---- gdb-7.9.1.orig/gdb/build-id.c 2015-07-10 15:24:05.000000000 +0200 -+++ gdb-7.9.1/gdb/build-id.c 2015-07-10 15:24:51.000000000 +0200 -@@ -827,9 +827,9 @@ missing_rpm_enlist (const char *filename +--- gdb-7.10.1.orig/gdb/build-id.c 2016-01-14 16:19:02.000000000 +0100 ++++ gdb-7.10.1/gdb/build-id.c 2016-01-14 16:21:43.000000000 +0100 +@@ -830,9 +830,9 @@ missing_rpm_enlist (const char *filename if (h == NULL) break; @@ -15,7 +15,7 @@ Index: gdb-7.9.1/gdb/build-id.c &err); if (!debuginfo) { -@@ -837,60 +837,19 @@ missing_rpm_enlist (const char *filename +@@ -840,60 +840,19 @@ missing_rpm_enlist (const char *filename err); continue; } @@ -78,7 +78,7 @@ Index: gdb-7.9.1/gdb/build-id.c /* Base package name for `debuginfo-install'. We do not use the `yum' command directly as the line yum --enablerepo='*debug*' install NAME-debuginfo.ARCH -@@ -975,10 +934,7 @@ missing_rpm_list_print (void) +@@ -978,10 +937,7 @@ missing_rpm_list_print (void) (int (*) (const void *, const void *)) missing_rpm_list_compar); printf_unfiltered (_("Missing separate debuginfos, use: %s"), @@ -90,12 +90,17 @@ Index: gdb-7.9.1/gdb/build-id.c for (array_iter = array; array_iter < array + missing_rpm_list_entries; array_iter++) { -@@ -1191,8 +1147,12 @@ debug_print_missing (const char *binary, +@@ -1194,13 +1150,12 @@ debug_print_missing (const char *binary, fprintf_unfiltered (gdb_stdlog, _("Missing separate debuginfo for %s\n"), binary); if (debug != NULL) - fprintf_unfiltered (gdb_stdlog, _("Try: %s %s\n"), -- "yum --enablerepo='*debug*' install", debug); +-#ifdef DNF_DEBUGINFO_INSTALL +- "dnf" +-#else +- "yum" +-#endif +- " --enablerepo='*debug*' install", debug); + { + const char *p = strrchr (debug, '/'); + fprintf_unfiltered (gdb_stdlog, _("Try: %s%.2s%.38s\"\n"), diff --git a/gdb-6.6-buildid-locate-rpm.patch b/gdb-6.6-buildid-locate-rpm.patch index 161ad1e..778886c 100644 --- a/gdb-6.6-buildid-locate-rpm.patch +++ b/gdb-6.6-buildid-locate-rpm.patch @@ -1,7 +1,7 @@ -Index: gdb-7.8.50.20141228/gdb/event-top.c +Index: gdb-7.9.90.20150717/gdb/event-top.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/event-top.c 2015-01-01 17:12:24.881489087 +0100 -+++ gdb-7.8.50.20141228/gdb/event-top.c 2015-01-01 17:12:28.821486803 +0100 +--- gdb-7.9.90.20150717.orig/gdb/event-top.c 2015-07-17 03:59:12.000000000 +0200 ++++ gdb-7.9.90.20150717/gdb/event-top.c 2015-08-01 20:07:15.822993674 +0200 @@ -37,6 +37,7 @@ #include "gdbcmd.h" /* for dont_repeat() */ #include "annotate.h" @@ -28,24 +28,24 @@ Index: gdb-7.8.50.20141228/gdb/event-top.c old_chain = make_cleanup (free_current_contents, &actual_gdb_prompt); /* Do not call the python hook on an explicit prompt change as -Index: gdb-7.8.50.20141228/gdb/symfile.h +Index: gdb-7.9.90.20150717/gdb/symfile.h =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/symfile.h 2015-01-01 17:12:24.881489087 +0100 -+++ gdb-7.8.50.20141228/gdb/symfile.h 2015-01-01 17:12:28.822486802 +0100 -@@ -577,6 +577,8 @@ void map_symbol_filenames (symbol_filena +--- gdb-7.9.90.20150717.orig/gdb/symfile.h 2015-08-01 20:07:15.787993404 +0200 ++++ gdb-7.9.90.20150717/gdb/symfile.h 2015-08-01 20:07:15.822993674 +0200 +@@ -587,6 +587,8 @@ void map_symbol_filenames (symbol_filena /* build-id support. */ - extern struct elf_build_id *build_id_addr_get (CORE_ADDR addr); + extern struct bfd_build_id *build_id_addr_get (CORE_ADDR addr); extern void debug_print_missing (const char *binary, const char *debug); +extern void debug_flush_missing (void); +#define BUILD_ID_MAIN_EXECUTABLE_FILENAME _("the main executable file") /* From dwarf2read.c */ -Index: gdb-7.8.50.20141228/gdb/testsuite/lib/gdb.exp +Index: gdb-7.9.90.20150717/gdb/testsuite/lib/gdb.exp =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/testsuite/lib/gdb.exp 2015-01-01 17:12:24.883489085 +0100 -+++ gdb-7.8.50.20141228/gdb/testsuite/lib/gdb.exp 2015-01-01 17:12:28.823486801 +0100 -@@ -1522,7 +1522,7 @@ proc default_gdb_start { } { +--- gdb-7.9.90.20150717.orig/gdb/testsuite/lib/gdb.exp 2015-08-01 20:07:15.789993420 +0200 ++++ gdb-7.9.90.20150717/gdb/testsuite/lib/gdb.exp 2015-08-01 20:07:15.824993689 +0200 +@@ -1573,7 +1573,7 @@ proc default_gdb_start { } { warning "Couldn't set the width to 0." } } @@ -54,10 +54,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/lib/gdb.exp send_gdb "set build-id-verbose 0\n" gdb_expect 10 { -re "$gdb_prompt $" { -Index: gdb-7.8.50.20141228/gdb/testsuite/lib/mi-support.exp +Index: gdb-7.9.90.20150717/gdb/testsuite/lib/mi-support.exp =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/testsuite/lib/mi-support.exp 2015-01-01 17:12:24.884489085 +0100 -+++ gdb-7.8.50.20141228/gdb/testsuite/lib/mi-support.exp 2015-01-01 17:12:28.823486801 +0100 +--- gdb-7.9.90.20150717.orig/gdb/testsuite/lib/mi-support.exp 2015-08-01 20:07:15.789993420 +0200 ++++ gdb-7.9.90.20150717/gdb/testsuite/lib/mi-support.exp 2015-08-01 20:07:15.824993689 +0200 @@ -214,7 +214,7 @@ proc default_mi_gdb_start { args } { warning "Couldn't set the width to 0." } @@ -67,10 +67,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/lib/mi-support.exp send_gdb "190-gdb-set build-id-verbose 0\n" gdb_expect 10 { -re ".*190-gdb-set build-id-verbose 0\r\n190\\\^done\r\n$mi_gdb_prompt$" { -Index: gdb-7.8.50.20141228/gdb/tui/tui-interp.c +Index: gdb-7.9.90.20150717/gdb/tui/tui-interp.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/tui/tui-interp.c 2015-01-01 17:12:28.824486801 +0100 -+++ gdb-7.8.50.20141228/gdb/tui/tui-interp.c 2015-01-01 17:12:43.240478444 +0100 +--- gdb-7.9.90.20150717.orig/gdb/tui/tui-interp.c 2015-07-17 03:59:13.000000000 +0200 ++++ gdb-7.9.90.20150717/gdb/tui/tui-interp.c 2015-08-01 20:07:15.825993697 +0200 @@ -31,6 +31,7 @@ #include "tui/tui-io.h" #include "infrun.h" @@ -79,10 +79,10 @@ Index: gdb-7.8.50.20141228/gdb/tui/tui-interp.c static struct ui_out *tui_ui_out (struct interp *self); -Index: gdb-7.8.50.20141228/gdb/aclocal.m4 +Index: gdb-7.9.90.20150717/gdb/aclocal.m4 =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/aclocal.m4 2015-01-01 17:12:24.885489084 +0100 -+++ gdb-7.8.50.20141228/gdb/aclocal.m4 2015-01-01 17:12:28.824486801 +0100 +--- gdb-7.9.90.20150717.orig/gdb/aclocal.m4 2015-07-17 03:59:12.000000000 +0200 ++++ gdb-7.9.90.20150717/gdb/aclocal.m4 2015-08-01 20:07:15.825993697 +0200 @@ -11,6 +11,221 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @@ -305,10 +305,10 @@ Index: gdb-7.8.50.20141228/gdb/aclocal.m4 # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -Index: gdb-7.8.50.20141228/gdb/config.in +Index: gdb-7.9.90.20150717/gdb/config.in =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/config.in 2015-01-01 17:12:24.885489084 +0100 -+++ gdb-7.8.50.20141228/gdb/config.in 2015-01-01 17:12:28.824486801 +0100 +--- gdb-7.9.90.20150717.orig/gdb/config.in 2015-07-17 03:59:12.000000000 +0200 ++++ gdb-7.9.90.20150717/gdb/config.in 2015-08-01 20:07:15.826993704 +0200 @@ -33,6 +33,9 @@ /* Define to BFD's default target vector. */ #undef DEFAULT_BFD_VEC @@ -319,7 +319,7 @@ Index: gdb-7.8.50.20141228/gdb/config.in /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS -@@ -207,6 +210,9 @@ +@@ -258,6 +261,9 @@ /* Define if Python 2.7 is being used. */ #undef HAVE_LIBPYTHON2_7 @@ -329,11 +329,11 @@ Index: gdb-7.8.50.20141228/gdb/config.in /* Define to 1 if you have the header file. */ #undef HAVE_LIBUNWIND_IA64_H -Index: gdb-7.8.50.20141228/gdb/configure +Index: gdb-7.9.90.20150717/gdb/configure =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/configure 2015-01-01 17:12:24.891489081 +0100 -+++ gdb-7.8.50.20141228/gdb/configure 2015-01-01 17:12:28.828486798 +0100 -@@ -698,6 +698,11 @@ PKGVERSION +--- gdb-7.9.90.20150717.orig/gdb/configure 2015-07-17 03:59:12.000000000 +0200 ++++ gdb-7.9.90.20150717/gdb/configure 2015-08-01 20:07:15.830993735 +0200 +@@ -703,6 +703,11 @@ PKGVERSION HAVE_NATIVE_GCORE_TARGET TARGET_OBS subdirs @@ -345,7 +345,7 @@ Index: gdb-7.8.50.20141228/gdb/configure GDB_DATADIR DEBUGDIR MAKEINFO_EXTRA_FLAGS -@@ -801,6 +806,7 @@ with_gdb_datadir +@@ -811,6 +816,7 @@ with_gdb_datadir with_relocated_sources with_auto_load_dir with_auto_load_safe_path @@ -353,7 +353,7 @@ Index: gdb-7.8.50.20141228/gdb/configure enable_targets enable_64_bit_bfd enable_gdbcli -@@ -852,6 +858,11 @@ CPPFLAGS +@@ -867,6 +873,11 @@ CCC CPP MAKEINFO MAKEINFOFLAGS @@ -365,7 +365,7 @@ Index: gdb-7.8.50.20141228/gdb/configure YACC YFLAGS XMKMF' -@@ -1522,6 +1533,8 @@ Optional Packages: +@@ -1538,6 +1549,8 @@ Optional Packages: [--with-auto-load-dir] --without-auto-load-safe-path do not restrict auto-loaded files locations @@ -374,7 +374,7 @@ Index: gdb-7.8.50.20141228/gdb/configure --with-libunwind-ia64 use libunwind frame unwinding for ia64 targets --with-curses use the curses library instead of the termcap library -@@ -1571,6 +1584,13 @@ Some influential environment variables: +@@ -1592,6 +1605,13 @@ Some influential environment variables: MAKEINFO Parent configure detects if it is of sufficient version. MAKEINFOFLAGS Parameters for MAKEINFO. @@ -388,7 +388,7 @@ Index: gdb-7.8.50.20141228/gdb/configure YACC The `Yet Another C Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to $YACC. -@@ -5267,6 +5287,491 @@ _ACEOF +@@ -5608,6 +5628,491 @@ _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_auto_load_safe_path" >&5 $as_echo "$with_auto_load_safe_path" >&6; } @@ -880,11 +880,11 @@ Index: gdb-7.8.50.20141228/gdb/configure subdirs="$subdirs testsuite" -Index: gdb-7.8.50.20141228/gdb/configure.ac +Index: gdb-7.9.90.20150717/gdb/configure.ac =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/configure.ac 2015-01-01 17:12:24.893489079 +0100 -+++ gdb-7.8.50.20141228/gdb/configure.ac 2015-01-01 17:12:28.829486798 +0100 -@@ -172,6 +172,199 @@ AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escap +--- gdb-7.9.90.20150717.orig/gdb/configure.ac 2015-07-17 03:59:12.000000000 +0200 ++++ gdb-7.9.90.20150717/gdb/configure.ac 2015-08-01 20:07:15.831993743 +0200 +@@ -177,6 +177,199 @@ AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escap [Directories safe to hold auto-loaded files.]) AC_MSG_RESULT([$with_auto_load_safe_path]) @@ -1084,10 +1084,10 @@ Index: gdb-7.8.50.20141228/gdb/configure.ac AC_CONFIG_SUBDIRS(testsuite) # Check whether to support alternative target configurations -Index: gdb-7.8.50.20141228/gdb/corelow.c +Index: gdb-7.9.90.20150717/gdb/corelow.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/corelow.c 2015-01-01 17:12:24.894489079 +0100 -+++ gdb-7.8.50.20141228/gdb/corelow.c 2015-01-01 17:12:28.829486798 +0100 +--- gdb-7.9.90.20150717.orig/gdb/corelow.c 2015-08-01 20:07:15.775993312 +0200 ++++ gdb-7.9.90.20150717/gdb/corelow.c 2015-08-01 20:07:15.831993743 +0200 @@ -310,7 +310,7 @@ build_id_locate_exec (int from_tty) symfile_objfile->flags |= OBJF_BUILD_ID_CORE_LOADED; } @@ -1097,19 +1097,19 @@ Index: gdb-7.8.50.20141228/gdb/corelow.c do_cleanups (back_to); -Index: gdb-7.8.50.20141228/gdb/build-id.c +Index: gdb-7.9.90.20150717/gdb/build-id.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/build-id.c 2015-01-01 17:12:24.894489079 +0100 -+++ gdb-7.8.50.20141228/gdb/build-id.c 2015-01-01 17:12:28.830486797 +0100 -@@ -31,6 +31,7 @@ - #include "gdbcmd.h" - #include "observer.h" +--- gdb-7.9.90.20150717.orig/gdb/build-id.c 2015-08-01 20:07:15.791993435 +0200 ++++ gdb-7.9.90.20150717/gdb/build-id.c 2015-08-01 20:08:27.735546630 +0200 +@@ -35,6 +35,7 @@ + #include "elf/common.h" + #include "elf-bfd.h" #include +#include "elf/external.h" #define BUILD_ID_VERBOSE_NONE 0 #define BUILD_ID_VERBOSE_FILENAMES 1 -@@ -664,8 +665,363 @@ build_id_to_filename (const struct elf_b +@@ -665,8 +666,363 @@ build_id_to_filename (const struct bfd_b return result; } @@ -1474,7 +1474,7 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c avoidance. */ struct missing_filepair -@@ -719,11 +1072,17 @@ missing_filepair_change (void) +@@ -720,11 +1076,17 @@ missing_filepair_change (void) /* All their memory came just from missing_filepair_OBSTACK. */ missing_filepair_hash = NULL; } @@ -1492,7 +1492,7 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c missing_filepair_change (); } -@@ -790,14 +1149,34 @@ debug_print_missing (const char *binary, +@@ -791,14 +1153,39 @@ debug_print_missing (const char *binary, *slot = missing_filepair; @@ -1529,7 +1529,12 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c + _("Missing separate debuginfo for %s\n"), binary); + if (debug != NULL) + fprintf_unfiltered (gdb_stdlog, _("Try: %s %s\n"), -+ "yum --enablerepo='*debug*' install", debug); ++#ifdef DNF_DEBUGINFO_INSTALL ++ "dnf" ++#else ++ "yum" ++#endif ++ " --enablerepo='*debug*' install", debug); + } } diff --git a/gdb-6.6-buildid-locate-solib-missing-ids.patch b/gdb-6.6-buildid-locate-solib-missing-ids.patch index 4af8da5..96cb493 100644 --- a/gdb-6.6-buildid-locate-solib-missing-ids.patch +++ b/gdb-6.6-buildid-locate-solib-missing-ids.patch @@ -1,20 +1,20 @@ -Index: gdb-7.5.50.20130310/gdb/solib-svr4.c +Index: gdb-7.9.90.20150709/gdb/solib-svr4.c =================================================================== ---- gdb-7.5.50.20130310.orig/gdb/solib-svr4.c 2013-03-10 16:37:49.000000000 +0100 -+++ gdb-7.5.50.20130310/gdb/solib-svr4.c 2013-03-10 16:43:45.498585091 +0100 -@@ -1225,14 +1225,27 @@ svr4_read_so_list (CORE_ADDR lm, struct +--- gdb-7.9.90.20150709.orig/gdb/solib-svr4.c 2015-07-09 18:18:54.526417766 +0200 ++++ gdb-7.9.90.20150709/gdb/solib-svr4.c 2015-07-09 18:19:33.074746586 +0200 +@@ -1381,14 +1381,27 @@ svr4_read_so_list (CORE_ADDR lm, CORE_AD } { -- struct elf_build_id *build_id; -+ struct elf_build_id *build_id = NULL; +- struct bfd_build_id *build_id; ++ struct bfd_build_id *build_id = NULL; - strncpy (new->so_original_name, buffer, SO_NAME_MAX_PATH_SIZE - 1); - new->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; + strncpy (newobj->so_original_name, buffer, SO_NAME_MAX_PATH_SIZE - 1); + newobj->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; /* May get overwritten below. */ - strcpy (new->so_name, new->so_original_name); + strcpy (newobj->so_name, newobj->so_original_name); -- build_id = build_id_addr_get (new->lm_info->l_ld); +- build_id = build_id_addr_get (newobj->lm_info->l_ld); + /* In the case the main executable was found according to its build-id + (from a core file) prevent loading a different build of a library + with accidentally the same SO_NAME. @@ -28,16 +28,16 @@ Index: gdb-7.5.50.20130310/gdb/solib-svr4.c + to the only existing file loaded that time - the executable. */ + if (symfile_objfile != NULL + && (symfile_objfile->flags & OBJF_BUILD_ID_CORE_LOADED) != 0) -+ build_id = build_id_addr_get (new->lm_info->l_ld); ++ build_id = build_id_addr_get (newobj->lm_info->l_ld); if (build_id != NULL) { char *name, *build_id_filename; -@@ -1247,23 +1260,7 @@ svr4_read_so_list (CORE_ADDR lm, struct +@@ -1403,23 +1416,7 @@ svr4_read_so_list (CORE_ADDR lm, CORE_AD xfree (name); } else - { -- debug_print_missing (new->so_name, build_id_filename); +- debug_print_missing (newobj->so_name, build_id_filename); - - /* In the case the main executable was found according to - its build-id (from a core file) prevent loading @@ -51,9 +51,9 @@ Index: gdb-7.5.50.20130310/gdb/solib-svr4.c - if (symfile_objfile != NULL - && (symfile_objfile->flags - & OBJF_BUILD_ID_CORE_LOADED) != 0) -- new->so_name[0] = 0; +- newobj->so_name[0] = 0; - } -+ debug_print_missing (new->so_name, build_id_filename); ++ debug_print_missing (newobj->so_name, build_id_filename); xfree (build_id_filename); xfree (build_id); diff --git a/gdb-6.6-buildid-locate.patch b/gdb-6.6-buildid-locate.patch index f4df312..44fc809 100644 --- a/gdb-6.6-buildid-locate.patch +++ b/gdb-6.6-buildid-locate.patch @@ -1,7 +1,7 @@ -Index: gdb-7.8.50.20141228/gdb/corelow.c +Index: gdb-7.9.90.20150709/gdb/corelow.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/corelow.c 2015-01-03 23:11:54.018270090 +0100 -+++ gdb-7.8.50.20141228/gdb/corelow.c 2015-01-03 23:12:08.691349454 +0100 +--- gdb-7.9.90.20150709.orig/gdb/corelow.c 2015-07-09 22:05:20.988044312 +0200 ++++ gdb-7.9.90.20150709/gdb/corelow.c 2015-07-09 22:05:42.057222722 +0200 @@ -45,6 +45,10 @@ #include "gdb_bfd.h" #include "completer.h" @@ -23,7 +23,7 @@ Index: gdb-7.8.50.20141228/gdb/corelow.c +build_id_locate_exec (int from_tty) +{ + CORE_ADDR at_entry; -+ struct elf_build_id *build_id; ++ struct bfd_build_id *build_id; + char *execfilename, *debug_filename; + char *build_id_filename; + struct cleanup *back_to; @@ -67,7 +67,7 @@ Index: gdb-7.8.50.20141228/gdb/corelow.c /* This routine opens and sets up the core file bfd. */ static void -@@ -405,6 +456,14 @@ core_open (const char *arg, int from_tty +@@ -404,6 +455,14 @@ core_open (const char *arg, int from_tty switch_to_thread (thread->ptid); } @@ -82,7 +82,7 @@ Index: gdb-7.8.50.20141228/gdb/corelow.c post_create_inferior (&core_ops, from_tty); /* Now go through the target stack looking for threads since there -@@ -1035,4 +1094,11 @@ _initialize_corelow (void) +@@ -1058,4 +1117,11 @@ _initialize_corelow (void) init_core_ops (); add_target_with_completer (&core_ops, filename_completer); @@ -94,11 +94,11 @@ Index: gdb-7.8.50.20141228/gdb/corelow.c + NULL, NULL, NULL, + &setlist, &showlist); } -Index: gdb-7.8.50.20141228/gdb/doc/gdb.texinfo +Index: gdb-7.9.90.20150709/gdb/doc/gdb.texinfo =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/doc/gdb.texinfo 2015-01-03 23:11:54.018270090 +0100 -+++ gdb-7.8.50.20141228/gdb/doc/gdb.texinfo 2015-01-03 23:12:08.701349509 +0100 -@@ -17930,6 +17930,27 @@ information files. +--- gdb-7.9.90.20150709.orig/gdb/doc/gdb.texinfo 2015-07-09 22:05:20.988044312 +0200 ++++ gdb-7.9.90.20150709/gdb/doc/gdb.texinfo 2015-07-09 22:05:42.067222806 +0200 +@@ -18304,6 +18304,27 @@ information files. @end table @@ -126,10 +126,10 @@ Index: gdb-7.8.50.20141228/gdb/doc/gdb.texinfo @cindex @code{.gnu_debuglink} sections @cindex debug link sections A debug link is a special section of the executable file named -Index: gdb-7.8.50.20141228/gdb/solib-svr4.c +Index: gdb-7.9.90.20150709/gdb/solib-svr4.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/solib-svr4.c 2015-01-03 23:11:54.018270090 +0100 -+++ gdb-7.8.50.20141228/gdb/solib-svr4.c 2015-01-03 23:12:08.702349514 +0100 +--- gdb-7.9.90.20150709.orig/gdb/solib-svr4.c 2015-07-09 22:05:20.988044312 +0200 ++++ gdb-7.9.90.20150709/gdb/solib-svr4.c 2015-07-09 22:05:42.068222815 +0200 @@ -45,6 +45,7 @@ #include "auxv.h" #include "gdb_bfd.h" @@ -138,22 +138,22 @@ Index: gdb-7.8.50.20141228/gdb/solib-svr4.c static struct link_map_offsets *svr4_fetch_link_map_offsets (void); static int svr4_have_link_map_offsets (void); -@@ -1366,9 +1367,52 @@ svr4_read_so_list (CORE_ADDR lm, CORE_AD +@@ -1379,9 +1380,52 @@ svr4_read_so_list (CORE_ADDR lm, CORE_AD continue; } -- strncpy (new->so_name, buffer, SO_NAME_MAX_PATH_SIZE - 1); -- new->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; -- strcpy (new->so_original_name, new->so_name); +- strncpy (newobj->so_name, buffer, SO_NAME_MAX_PATH_SIZE - 1); +- newobj->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; +- strcpy (newobj->so_original_name, newobj->so_name); + { -+ struct elf_build_id *build_id; ++ struct bfd_build_id *build_id; + -+ strncpy (new->so_original_name, buffer, SO_NAME_MAX_PATH_SIZE - 1); -+ new->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; ++ strncpy (newobj->so_original_name, buffer, SO_NAME_MAX_PATH_SIZE - 1); ++ newobj->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; + /* May get overwritten below. */ -+ strcpy (new->so_name, new->so_original_name); ++ strcpy (newobj->so_name, newobj->so_original_name); + -+ build_id = build_id_addr_get (new->lm_info->l_ld); ++ build_id = build_id_addr_get (newobj->lm_info->l_ld); + if (build_id != NULL) + { + char *name, *build_id_filename; @@ -163,13 +163,13 @@ Index: gdb-7.8.50.20141228/gdb/solib-svr4.c + name = build_id_to_filename (build_id, &build_id_filename); + if (name != NULL) + { -+ strncpy (new->so_name, name, SO_NAME_MAX_PATH_SIZE - 1); -+ new->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; ++ strncpy (newobj->so_name, name, SO_NAME_MAX_PATH_SIZE - 1); ++ newobj->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; + xfree (name); + } + else + { -+ debug_print_missing (new->so_name, build_id_filename); ++ debug_print_missing (newobj->so_name, build_id_filename); + + /* In the case the main executable was found according to + its build-id (from a core file) prevent loading @@ -183,7 +183,7 @@ Index: gdb-7.8.50.20141228/gdb/solib-svr4.c + if (symfile_objfile != NULL + && (symfile_objfile->flags + & OBJF_BUILD_ID_CORE_LOADED) != 0) -+ new->so_name[0] = 0; ++ newobj->so_name[0] = 0; + } + + xfree (build_id_filename); @@ -194,11 +194,11 @@ Index: gdb-7.8.50.20141228/gdb/solib-svr4.c xfree (buffer); /* If this entry has no name, or its name matches the name -Index: gdb-7.8.50.20141228/gdb/elfread.c +Index: gdb-7.9.90.20150709/gdb/elfread.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/elfread.c 2015-01-03 23:11:54.018270090 +0100 -+++ gdb-7.8.50.20141228/gdb/elfread.c 2015-01-03 23:12:08.703349519 +0100 -@@ -1339,9 +1339,10 @@ elf_symfile_read (struct objfile *objfil +--- gdb-7.9.90.20150709.orig/gdb/elfread.c 2015-07-09 22:05:20.988044312 +0200 ++++ gdb-7.9.90.20150709/gdb/elfread.c 2015-07-09 22:05:42.068222815 +0200 +@@ -1250,9 +1250,10 @@ elf_symfile_read (struct objfile *objfil && objfile->separate_debug_objfile == NULL && objfile->separate_debug_objfile_backlink == NULL) { @@ -211,7 +211,7 @@ Index: gdb-7.8.50.20141228/gdb/elfread.c if (debugfile == NULL) debugfile = find_separate_debug_file_by_debuglink (objfile); -@@ -1355,6 +1356,12 @@ elf_symfile_read (struct objfile *objfil +@@ -1266,6 +1267,12 @@ elf_symfile_read (struct objfile *objfil symbol_file_add_separate (abfd, debugfile, symfile_flags, objfile); do_cleanups (cleanup); } @@ -224,26 +224,26 @@ Index: gdb-7.8.50.20141228/gdb/elfread.c } } -Index: gdb-7.8.50.20141228/gdb/symfile.h +Index: gdb-7.9.90.20150709/gdb/symfile.h =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/symfile.h 2015-01-03 23:11:54.018270090 +0100 -+++ gdb-7.8.50.20141228/gdb/symfile.h 2015-01-03 23:12:08.703349519 +0100 -@@ -574,6 +574,10 @@ void expand_symtabs_matching (expand_sym +--- gdb-7.9.90.20150709.orig/gdb/symfile.h 2015-07-09 22:05:20.988044312 +0200 ++++ gdb-7.9.90.20150709/gdb/symfile.h 2015-07-09 22:05:42.068222815 +0200 +@@ -584,6 +584,10 @@ void expand_symtabs_matching (expand_sym void map_symbol_filenames (symbol_filename_ftype *fun, void *data, int need_fullname); +/* build-id support. */ -+extern struct elf_build_id *build_id_addr_get (CORE_ADDR addr); ++extern struct bfd_build_id *build_id_addr_get (CORE_ADDR addr); +extern void debug_print_missing (const char *binary, const char *debug); + /* From dwarf2read.c */ /* Names for a dwarf2 debugging section. The field NORMAL is the normal -Index: gdb-7.8.50.20141228/gdb/testsuite/lib/gdb.exp +Index: gdb-7.9.90.20150709/gdb/testsuite/lib/gdb.exp =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/testsuite/lib/gdb.exp 2015-01-03 23:11:54.018270090 +0100 -+++ gdb-7.8.50.20141228/gdb/testsuite/lib/gdb.exp 2015-01-03 23:12:08.704349525 +0100 -@@ -1522,6 +1522,16 @@ proc default_gdb_start { } { +--- gdb-7.9.90.20150709.orig/gdb/testsuite/lib/gdb.exp 2015-07-09 22:05:20.988044312 +0200 ++++ gdb-7.9.90.20150709/gdb/testsuite/lib/gdb.exp 2015-07-09 22:05:42.070222832 +0200 +@@ -1573,6 +1573,16 @@ proc default_gdb_start { } { warning "Couldn't set the width to 0." } } @@ -260,10 +260,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/lib/gdb.exp return 0 } -Index: gdb-7.8.50.20141228/gdb/testsuite/lib/mi-support.exp +Index: gdb-7.9.90.20150709/gdb/testsuite/lib/mi-support.exp =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/testsuite/lib/mi-support.exp 2015-01-03 23:11:54.018270090 +0100 -+++ gdb-7.8.50.20141228/gdb/testsuite/lib/mi-support.exp 2015-01-03 23:12:08.705349530 +0100 +--- gdb-7.9.90.20150709.orig/gdb/testsuite/lib/mi-support.exp 2015-07-09 22:05:20.988044312 +0200 ++++ gdb-7.9.90.20150709/gdb/testsuite/lib/mi-support.exp 2015-07-09 22:05:42.070222832 +0200 @@ -214,6 +214,16 @@ proc default_mi_gdb_start { args } { warning "Couldn't set the width to 0." } @@ -281,10 +281,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/lib/mi-support.exp # If allowing the inferior to have its own PTY then assign the inferior # its own terminal device here. if { $separate_inferior_pty } { -Index: gdb-7.8.50.20141228/gdb/objfiles.h +Index: gdb-7.9.90.20150709/gdb/objfiles.h =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/objfiles.h 2015-01-03 23:11:54.018270090 +0100 -+++ gdb-7.8.50.20141228/gdb/objfiles.h 2015-01-03 23:12:08.705349530 +0100 +--- gdb-7.9.90.20150709.orig/gdb/objfiles.h 2015-07-09 22:05:20.988044312 +0200 ++++ gdb-7.9.90.20150709/gdb/objfiles.h 2015-07-09 22:05:42.071222840 +0200 @@ -459,6 +459,10 @@ struct objfile #define OBJF_NOT_FILENAME (1 << 6) @@ -296,10 +296,10 @@ Index: gdb-7.8.50.20141228/gdb/objfiles.h /* Declarations for functions defined in objfiles.c */ extern struct objfile *allocate_objfile (bfd *, const char *name, int); -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.base/corefile.exp +Index: gdb-7.9.90.20150709/gdb/testsuite/gdb.base/corefile.exp =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/testsuite/gdb.base/corefile.exp 2015-01-03 23:11:54.018270090 +0100 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.base/corefile.exp 2015-01-03 23:12:08.705349530 +0100 +--- gdb-7.9.90.20150709.orig/gdb/testsuite/gdb.base/corefile.exp 2015-07-09 22:05:20.988044312 +0200 ++++ gdb-7.9.90.20150709/gdb/testsuite/gdb.base/corefile.exp 2015-07-09 22:05:42.071222840 +0200 @@ -293,3 +293,33 @@ gdb_test_multiple "core-file $corefile" pass $test } @@ -334,18 +334,22 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.base/corefile.exp + gdb_test "info files" "Local exec file:\r\n\[ \t\]*`[string_to_regexp $debugdir/$buildid]', file type .*" + pass $wholetest +} -Index: gdb-7.8.50.20141228/gdb/build-id.c +Index: gdb-7.9.90.20150709/gdb/build-id.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/build-id.c 2015-01-03 23:11:54.018270090 +0100 -+++ gdb-7.8.50.20141228/gdb/build-id.c 2015-01-03 23:12:40.792523085 +0100 -@@ -26,11 +26,64 @@ - #include "symfile.h" +--- gdb-7.9.90.20150709.orig/gdb/build-id.c 2015-07-09 22:05:20.988044312 +0200 ++++ gdb-7.9.90.20150709/gdb/build-id.c 2015-07-09 22:19:35.022957009 +0200 +@@ -26,11 +26,67 @@ #include "objfiles.h" #include "filenames.h" + #include "gdbcore.h" +#include "libbfd.h" +#include "gdbcore.h" +#include "gdbcmd.h" +#include "observer.h" ++#include "elf/external.h" ++#include "elf/internal.h" ++#include "elf/common.h" ++#include "elf-bfd.h" +#include + +#define BUILD_ID_VERBOSE_NONE 0 @@ -359,12 +363,10 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c + fprintf_filtered (file, _("Verbosity level of the build-id locator is %s.\n"), + value); +} - --/* See build-id.h. */ +/* Locate NT_GNU_BUILD_ID and return its matching debug filename. + FIXME: NOTE decoding should be unified with the BFD core notes decoding. */ + -+static struct elf_build_id * ++static struct bfd_build_id * +build_id_buf_get (bfd *templ, gdb_byte *buf, bfd_size_type size) +{ + bfd_byte *p; @@ -384,41 +386,41 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c + { + size_t size = descsz; + gdb_byte *data = (void *) descdata; -+ struct elf_build_id *retval; ++ struct bfd_build_id *retval; + + retval = xmalloc (sizeof *retval - 1 + size); + retval->size = size; + memcpy (retval->data, data, size); - ++ + return retval; + } + p = descdata + BFD_ALIGN (descsz, 4); + } + return NULL; +} -+ -+/* See build-id.h. */ -+ - const struct elf_build_id * + + /* See build-id.h. */ + + const struct bfd_build_id * -build_id_bfd_get (bfd *abfd) +build_id_bfd_shdr_get (bfd *abfd) { - if (!bfd_check_format (abfd, bfd_object) - || bfd_get_flavour (abfd) != bfd_target_elf_flavour -@@ -44,6 +97,348 @@ build_id_bfd_get (bfd *abfd) - return elf_tdata (abfd)->build_id; + if (!bfd_check_format (abfd, bfd_object)) + return NULL; +@@ -42,6 +98,348 @@ build_id_bfd_get (bfd *abfd) + return NULL; } +/* Core files may have missing (corrupt) SHDR but PDHR is correct there. + bfd_elf_bfd_from_remote_memory () has too much overhead by + allocating/reading all the available ELF PT_LOADs. */ + -+static struct elf_build_id * ++static struct bfd_build_id * +build_id_phdr_get (bfd *templ, bfd_vma loadbase, unsigned e_phnum, + Elf_Internal_Phdr *i_phdr) +{ + int i; -+ struct elf_build_id *retval = NULL; ++ struct bfd_build_id *retval = NULL; + + for (i = 0; i < e_phnum; i++) + if (i_phdr[i].p_type == PT_NOTE && i_phdr[i].p_filesz > 0) @@ -705,11 +707,11 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c + } +} + -+struct elf_build_id * ++struct bfd_build_id * +build_id_addr_get (CORE_ADDR addr) +{ + struct build_id_addr_sect *candidate; -+ struct elf_build_id *retval = NULL; ++ struct bfd_build_id *retval = NULL; + Elf_Internal_Phdr *i_phdr = NULL; + bfd_vma loadbase = 0; + unsigned e_phnum = 0; @@ -754,8 +756,8 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c /* See build-id.h. */ int -@@ -52,7 +447,7 @@ build_id_verify (bfd *abfd, size_t check - const struct elf_build_id *found; +@@ -50,7 +448,7 @@ build_id_verify (bfd *abfd, size_t check + const struct bfd_build_id *found; int retval = 0; - found = build_id_bfd_get (abfd); @@ -763,7 +765,7 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c if (found == NULL) warning (_("File \"%s\" has no build-id, file skipped"), -@@ -67,20 +462,56 @@ build_id_verify (bfd *abfd, size_t check +@@ -65,20 +463,56 @@ build_id_verify (bfd *abfd, size_t check return retval; } @@ -824,12 +826,13 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c /* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will cause "/.build-id/..." lookups. */ -@@ -93,8 +524,11 @@ build_id_to_debug_bfd (size_t build_id_l +@@ -91,9 +525,12 @@ build_id_to_debug_bfd (size_t build_id_l size_t debugdir_len = strlen (debugdir); const gdb_byte *data = build_id; size_t size = build_id_len; - char *s; char *filename = NULL; + struct cleanup *inner; + unsigned seqno; + struct stat statbuf_trash; + /* Initialize it just to avoid a GCC false warning. */ @@ -837,7 +840,7 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c memcpy (link, debugdir, debugdir_len); s = &link[debugdir_len]; -@@ -108,44 +542,282 @@ build_id_to_debug_bfd (size_t build_id_l +@@ -107,47 +544,281 @@ build_id_to_debug_bfd (size_t build_id_l *s++ = '/'; while (size-- > 0) s += sprintf (s, "%02x", (unsigned) *data++); @@ -884,20 +887,22 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c + continue; + + /* We expect to be silent on the non-existing files. */ -+ abfd = gdb_bfd_open_maybe_remote (filename); -+ if (abfd == NULL) -+ { -+ xfree (filename); -+ continue; -+ } ++ inner = make_cleanup (xfree, filename); ++ abfd = gdb_bfd_open (filename, gnutarget, -1); ++ do_cleanups (inner); - if (filename == NULL) - continue; ++ if (abfd == NULL) ++ continue; + +- /* We expect to be silent on the non-existing files. */ +- inner = make_cleanup (xfree, filename); +- abfd = gdb_bfd_open (filename, gnutarget, -1); +- do_cleanups (inner); + if (build_id_verify (abfd, build_id_len, build_id)) + break; -- /* We expect to be silent on the non-existing files. */ -- abfd = gdb_bfd_open_maybe_remote (filename); - if (abfd == NULL) - continue; + gdb_bfd_unref (abfd); @@ -905,7 +910,6 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c - if (build_id_verify (abfd, build_id_len, build_id)) - break; -+ xfree (filename); + filename = NULL; + } @@ -963,7 +967,7 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c } +char * -+build_id_to_filename (const struct elf_build_id *build_id, char **link_return) ++build_id_to_filename (const struct bfd_build_id *build_id, char **link_return) +{ + bfd *abfd; + char *result; @@ -1120,7 +1124,7 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c +find_separate_debug_file_by_buildid (struct objfile *objfile, + char **build_id_filename_return) { - const struct elf_build_id *build_id; + const struct bfd_build_id *build_id; - build_id = build_id_bfd_get (objfile->obfd); + if (build_id_filename_return) @@ -1137,7 +1141,7 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c /* Prevent looping on a stripped .debug file. */ if (abfd != NULL && filename_cmp (bfd_get_filename (abfd), -@@ -165,3 +837,21 @@ find_separate_debug_file_by_buildid (str +@@ -167,3 +838,21 @@ find_separate_debug_file_by_buildid (str } return NULL; } @@ -1159,10 +1163,10 @@ Index: gdb-7.8.50.20141228/gdb/build-id.c + + observer_attach_executable_changed (debug_print_executable_changed); +} -Index: gdb-7.8.50.20141228/gdb/build-id.h +Index: gdb-7.9.90.20150709/gdb/build-id.h =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/build-id.h 2015-01-03 23:11:54.018270090 +0100 -+++ gdb-7.8.50.20141228/gdb/build-id.h 2015-01-03 23:12:08.706349536 +0100 +--- gdb-7.9.90.20150709.orig/gdb/build-id.h 2015-07-09 22:05:20.988044312 +0200 ++++ gdb-7.9.90.20150709/gdb/build-id.h 2015-07-09 22:05:42.072222849 +0200 @@ -20,9 +20,10 @@ #ifndef BUILD_ID_H #define BUILD_ID_H @@ -1171,8 +1175,8 @@ Index: gdb-7.8.50.20141228/gdb/build-id.h +/* Separate debuginfo files have corrupted PHDR but SHDR is correct there. + Locate NT_GNU_BUILD_ID from ABFD and return its content. */ --extern const struct elf_build_id *build_id_bfd_get (bfd *abfd); -+extern const struct elf_build_id *build_id_bfd_shdr_get (bfd *abfd); +-extern const struct bfd_build_id *build_id_bfd_get (bfd *abfd); ++extern const struct bfd_build_id *build_id_bfd_shdr_get (bfd *abfd); /* Return true if ABFD has NT_GNU_BUILD_ID matching the CHECK value. Otherwise, issue a warning and return false. */ @@ -1184,7 +1188,7 @@ Index: gdb-7.8.50.20141228/gdb/build-id.h + const bfd_byte *build_id, char **link_return, + int add_debug_suffix); + -+extern char *build_id_to_filename (const struct elf_build_id *build_id, ++extern char *build_id_to_filename (const struct bfd_build_id *build_id, + char **link_return); /* Find the separate debug file for OBJFILE, by using the build-id @@ -1197,11 +1201,11 @@ Index: gdb-7.8.50.20141228/gdb/build-id.h + char **build_id_filename_return); #endif /* BUILD_ID_H */ -Index: gdb-7.8.50.20141228/gdb/dwarf2read.c +Index: gdb-7.9.90.20150709/gdb/dwarf2read.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/dwarf2read.c 2015-01-03 23:11:54.018270090 +0100 -+++ gdb-7.8.50.20141228/gdb/dwarf2read.c 2015-01-03 23:12:08.711349563 +0100 -@@ -2443,7 +2443,7 @@ dwarf2_get_dwz_file (void) +--- gdb-7.9.90.20150709.orig/gdb/dwarf2read.c 2015-07-09 22:05:20.988044312 +0200 ++++ gdb-7.9.90.20150709/gdb/dwarf2read.c 2015-07-09 22:05:42.077222891 +0200 +@@ -2507,7 +2507,7 @@ dwarf2_get_dwz_file (void) } if (dwz_bfd == NULL) @@ -1210,20 +1214,20 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c if (dwz_bfd == NULL) error (_("could not find '.gnu_debugaltlink' file for %s"), -Index: gdb-7.8.50.20141228/gdb/python/py-objfile.c +Index: gdb-7.9.90.20150709/gdb/python/py-objfile.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/python/py-objfile.c 2015-01-03 23:11:54.018270090 +0100 -+++ gdb-7.8.50.20141228/gdb/python/py-objfile.c 2015-01-03 23:12:08.712349568 +0100 -@@ -118,7 +118,7 @@ objfpy_get_build_id (PyObject *self, voi +--- gdb-7.9.90.20150709.orig/gdb/python/py-objfile.c 2015-07-09 22:05:20.988044312 +0200 ++++ gdb-7.9.90.20150709/gdb/python/py-objfile.c 2015-07-09 22:05:42.077222891 +0200 +@@ -139,7 +139,7 @@ objfpy_get_build_id (PyObject *self, voi - TRY_CATCH (except, RETURN_MASK_ALL) + TRY { - build_id = build_id_bfd_get (objfile->obfd); + build_id = build_id_bfd_shdr_get (objfile->obfd); } - GDB_PY_HANDLE_EXCEPTION (except); - -@@ -467,7 +467,7 @@ objfpy_lookup_objfile_by_build_id (const + CATCH (except, RETURN_MASK_ALL) + { +@@ -548,7 +548,7 @@ objfpy_lookup_objfile_by_build_id (const /* Don't return separate debug files. */ if (objfile->separate_debug_objfile_backlink != NULL) continue; @@ -1232,3 +1236,16 @@ Index: gdb-7.8.50.20141228/gdb/python/py-objfile.c if (obfd_build_id == NULL) continue; if (objfpy_build_id_matches (obfd_build_id, build_id)) +Index: gdb-7.9.90.20150709/gdb/coffread.c +=================================================================== +--- gdb-7.9.90.20150709.orig/gdb/coffread.c 2015-07-09 22:05:20.988044312 +0200 ++++ gdb-7.9.90.20150709/gdb/coffread.c 2015-07-09 22:05:42.078222899 +0200 +@@ -739,7 +739,7 @@ coff_symfile_read (struct objfile *objfi + { + char *debugfile; + +- debugfile = find_separate_debug_file_by_buildid (objfile); ++ debugfile = find_separate_debug_file_by_buildid (objfile, NULL); + + if (debugfile == NULL) + debugfile = find_separate_debug_file_by_debuglink (objfile); diff --git a/gdb-6.6-bz235197-fork-detach-info.patch b/gdb-6.6-bz235197-fork-detach-info.patch index 4704d23..223e7ea 100644 --- a/gdb-6.6-bz235197-fork-detach-info.patch +++ b/gdb-6.6-bz235197-fork-detach-info.patch @@ -3,10 +3,10 @@ Port to GDB-6.8pre. Remove the `[' character from the GDB-6.8 default message. -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.base/fork-detach.c +Index: gdb-7.9.50.20150531/gdb/testsuite/gdb.base/fork-detach.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.base/fork-detach.c 2015-01-06 19:31:40.703988534 +0100 ++++ gdb-7.9.50.20150531/gdb/testsuite/gdb.base/fork-detach.c 2015-05-31 18:23:49.008450716 +0200 @@ -0,0 +1,57 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -65,10 +65,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.base/fork-detach.c + } + return 0; +} -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.base/fork-detach.exp +Index: gdb-7.9.50.20150531/gdb/testsuite/gdb.base/fork-detach.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.base/fork-detach.exp 2015-01-06 19:31:40.704988538 +0100 ++++ gdb-7.9.50.20150531/gdb/testsuite/gdb.base/fork-detach.exp 2015-05-31 18:23:49.008450716 +0200 @@ -0,0 +1,36 @@ +# Copyright 2007 Free Software Foundation, Inc. + @@ -106,16 +106,16 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.base/fork-detach.exp +gdb_test "" \ + "Detaching after fork from child process.*\\\[Inferior .* exited normally\\\]" \ + "Info message caught" -Index: gdb-7.8.50.20141228/gdb/infrun.c +Index: gdb-7.9.50.20150531/gdb/infrun.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/infrun.c 2015-01-06 19:31:40.262986644 +0100 -+++ gdb-7.8.50.20141228/gdb/infrun.c 2015-01-06 19:43:54.865219096 +0100 -@@ -456,7 +456,7 @@ holding the child stopped. Try \"set de +--- gdb-7.9.50.20150531.orig/gdb/infrun.c 2015-05-31 18:23:41.703405617 +0200 ++++ gdb-7.9.50.20150531/gdb/infrun.c 2015-05-31 18:23:49.011450735 +0200 +@@ -443,7 +443,7 @@ holding the child stopped. Try \"set de remove_breakpoints_pid (ptid_get_pid (inferior_ptid)); } - if (info_verbose || debug_infrun) + if (1 /* Fedora Bug 235197 */ || info_verbose || debug_infrun) { - target_terminal_ours_for_output (); - fprintf_filtered (gdb_stdlog, + /* Ensure that we have a process ptid. */ + ptid_t process_ptid = pid_to_ptid (ptid_get_pid (child_ptid)); diff --git a/gdb-6.6-scheduler_locking-step-sw-watchpoints2.patch b/gdb-6.6-scheduler_locking-step-sw-watchpoints2.patch deleted file mode 100644 index ba70201..0000000 --- a/gdb-6.6-scheduler_locking-step-sw-watchpoints2.patch +++ /dev/null @@ -1,217 +0,0 @@ -2007-06-25 Jan Kratochvil - - * inferior.h (enum resume_step): New definition. - (resume): Change STEP parameter type to ENUM RESUME_STEP. - * infrun.c (resume): Likewise. Extend debug printing of the STEP - parameter. Lock the scheduler only for intentional stepping. - (proceed): Replace the variable ONESTEP with tristate RESUME_STEP. - Set the third RESUME_STEP state according to BPSTAT_SHOULD_STEP. - (currently_stepping): Change the return type to ENUM RESUME_STEP. - Return RESUME_STEP_NEEDED if it is just due to BPSTAT_SHOULD_STEP. - * linux-nat.c (select_singlestep_lwp_callback): Do not focus on - the software watchpoint events. - * linux-nat.h (struct lwp_info): Redeclare STEP as ENUM RESUME_STEP. - -2007-10-19 Jan Kratochvil - - * infrun.c (proceed): RESUME_STEP initialized for non-stepping. - RESUME_STEP set according to STEP only at the end of the function. - -2008-02-24 Jan Kratochvil - - Port to GDB-6.8pre. - -Index: gdb-7.8.90.20150125/gdb/infrun.c -=================================================================== ---- gdb-7.8.90.20150125.orig/gdb/infrun.c 2015-01-25 08:36:16.651716159 +0100 -+++ gdb-7.8.90.20150125/gdb/infrun.c 2015-01-25 08:36:26.491758571 +0100 -@@ -86,7 +86,7 @@ static void follow_inferior_reset_breakp - static void set_schedlock_func (char *args, int from_tty, - struct cmd_list_element *c); - --static int currently_stepping (struct thread_info *tp); -+static enum resume_step currently_stepping (struct thread_info *tp); - - static void xdb_handle_command (char *args, int from_tty); - -@@ -1998,7 +1998,7 @@ user_visible_resume_ptid (int step) - resume_ptid = inferior_ptid; - } - else if ((scheduler_mode == schedlock_on) -- || (scheduler_mode == schedlock_step && step)) -+ || (scheduler_mode == schedlock_step && step == RESUME_STEP_USER)) - { - /* User-settable 'scheduler' mode requires solo thread resume. */ - resume_ptid = inferior_ptid; -@@ -2022,7 +2022,7 @@ user_visible_resume_ptid (int step) - STEP nonzero if we should step (zero to continue instead). - SIG is the signal to give the inferior (zero for none). */ - void --resume (int step, enum gdb_signal sig) -+resume (enum resume_step step, enum gdb_signal sig) - { - struct cleanup *old_cleanups = make_cleanup (resume_cleanups, 0); - struct regcache *regcache = get_current_regcache (); -@@ -2064,9 +2064,13 @@ resume (int step, enum gdb_signal sig) - - if (debug_infrun) - fprintf_unfiltered (gdb_stdlog, -- "infrun: resume (step=%d, signal=%s), " -+ "infrun: resume (step=%s, signal=%s), " - "trap_expected=%d, current thread [%s] at %s\n", -- step, gdb_signal_to_symbol_string (sig), -+ (step == RESUME_STEP_CONTINUE -+ ? "RESUME_STEP_CONTINUE" -+ : (step == RESUME_STEP_USER ? "RESUME_STEP_USER" -+ : "RESUME_STEP_NEEDED")), -+ gdb_signal_to_symbol_string (sig), - tp->control.trap_expected, - target_pid_to_str (inferior_ptid), - paddress (gdbarch, pc)); -@@ -2543,6 +2547,7 @@ proceed (CORE_ADDR addr, enum gdb_signal - struct thread_info *tp; - CORE_ADDR pc; - struct address_space *aspace; -+ enum resume_step resume_step = RESUME_STEP_CONTINUE; - - /* If we're stopped at a fork/vfork, follow the branch set by the - "set follow-fork-mode" command; otherwise, we'll just proceed -@@ -2586,13 +2591,19 @@ proceed (CORE_ADDR addr, enum gdb_signal - Note, we don't do this in reverse, because we won't - actually be executing the breakpoint insn anyway. - We'll be (un-)executing the previous instruction. */ -+ { - tp->stepping_over_breakpoint = 1; -+ resume_step = RESUME_STEP_USER; -+ } - else if (gdbarch_single_step_through_delay_p (gdbarch) - && gdbarch_single_step_through_delay (gdbarch, - get_current_frame ())) - /* We stepped onto an instruction that needs to be stepped - again before re-inserting the breakpoint, do so. */ -+ { - tp->stepping_over_breakpoint = 1; -+ resume_step = RESUME_STEP_USER; -+ } - } - else - { -@@ -2647,6 +2658,7 @@ proceed (CORE_ADDR addr, enum gdb_signal - tp->prev_pc = regcache_read_pc (get_current_regcache ()); - switch_to_thread (step_over->ptid); - tp = step_over; -+ resume_step = RESUME_STEP_USER; - } - } - -@@ -2699,9 +2711,13 @@ proceed (CORE_ADDR addr, enum gdb_signal - correctly when the inferior is stopped. */ - tp->prev_pc = regcache_read_pc (get_current_regcache ()); - -+ if (tp->control.trap_expected || step) -+ resume_step = RESUME_STEP_USER; -+ if (resume_step == RESUME_STEP_CONTINUE && bpstat_should_step ()) -+ resume_step = RESUME_STEP_NEEDED; -+ - /* Resume inferior. */ -- resume (tp->control.trap_expected || step || bpstat_should_step (), -- tp->suspend.stop_signal); -+ resume (resume_step, tp->suspend.stop_signal); - - /* Wait for it to stop (if not standalone) - and in any case decode why it stopped, and act accordingly. */ -@@ -5684,14 +5700,16 @@ switch_back_to_stepped_thread (struct ex - - /* Is thread TP in the middle of single-stepping? */ - --static int -+static enum resume_step - currently_stepping (struct thread_info *tp) - { -- return ((tp->control.step_range_end -+ if ((tp->control.step_range_end - && tp->control.step_resume_breakpoint == NULL) -- || tp->control.trap_expected -- || tp->stepped_breakpoint -- || bpstat_should_step ()); -+ || tp->control.trap_expected) -+ return RESUME_STEP_USER; -+ if (bpstat_should_step ()) -+ return RESUME_STEP_NEEDED; -+ return RESUME_STEP_CONTINUE; - } - - /* Inferior has stepped into a subroutine call with source code that -Index: gdb-7.8.90.20150125/gdb/linux-nat.c -=================================================================== ---- gdb-7.8.90.20150125.orig/gdb/linux-nat.c 2015-01-25 08:36:16.653716168 +0100 -+++ gdb-7.8.90.20150125/gdb/linux-nat.c 2015-01-25 08:36:26.492758576 +0100 -@@ -2648,7 +2648,11 @@ static int - select_singlestep_lwp_callback (struct lwp_info *lp, void *data) - { - if (lp->last_resume_kind == resume_step -- && lp->status != 0) -+ && lp->status != 0 -+ /* We do not focus on software watchpoints as we would not catch -+ STEPPING_PAST_SINGLESTEP_BREAKPOINT breakpoints in some other thread -+ as they would remain pending due to `Push back breakpoint for %s'. */ -+ && lp->step == RESUME_STEP_USER) - return 1; - else - return 0; -Index: gdb-7.8.90.20150125/gdb/linux-nat.h -=================================================================== ---- gdb-7.8.90.20150125.orig/gdb/linux-nat.h 2015-01-25 08:36:16.653716168 +0100 -+++ gdb-7.8.90.20150125/gdb/linux-nat.h 2015-01-25 08:36:44.948838126 +0100 -@@ -18,6 +18,7 @@ - along with this program. If not, see . */ - - #include "target.h" -+#include "infrun.h" - - #include - -@@ -88,8 +89,8 @@ struct lwp_info - running and not stepping, this is 0. */ - CORE_ADDR stop_pc; - -- /* Non-zero if we were stepping this LWP. */ -- int step; -+ /* The kind of stepping of this LWP. */ -+ enum resume_step step; - - /* The reason the LWP last stopped, if we need to track it - (breakpoint, watchpoint, etc.) */ -Index: gdb-7.8.90.20150125/gdb/infrun.h -=================================================================== ---- gdb-7.8.90.20150125.orig/gdb/infrun.h 2015-01-25 08:36:16.654716172 +0100 -+++ gdb-7.8.90.20150125/gdb/infrun.h 2015-01-25 08:36:26.493758580 +0100 -@@ -92,7 +92,14 @@ extern void proceed (CORE_ADDR, enum gdb - - /* The `resume' routine should only be called in special circumstances. - Normally, use `proceed', which handles a lot of bookkeeping. */ --extern void resume (int, enum gdb_signal); -+enum resume_step -+ { -+ /* currently_stepping () should return non-zero for non-continue. */ -+ RESUME_STEP_CONTINUE = 0, -+ RESUME_STEP_USER, /* Stepping is intentional by the user. */ -+ RESUME_STEP_NEEDED /* Stepping only for software watchpoints. */ -+ }; -+extern void resume (enum resume_step, enum gdb_signal); - - /* Return a ptid representing the set of threads that we will proceed, - in the perspective of the user/frontend. */ -Index: gdb-7.8.90.20150125/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp -=================================================================== ---- gdb-7.8.90.20150125.orig/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp 2015-01-25 08:36:16.654716172 +0100 -+++ gdb-7.8.90.20150125/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp 2015-01-25 08:36:26.493758580 +0100 -@@ -97,7 +97,7 @@ gdb_test "set debug infrun 1" - - gdb_test \ - "step" \ -- ".*need to step-over.*resume \\(step=1.*signal arrived while stepping over breakpoint.*switching back to stepped thread.*stepped to a different line.*callme.*" \ -+ ".*need to step-over.*resume \\(step=RESUME_STEP_USER.*signal arrived while stepping over breakpoint.*switching back to stepped thread.*stepped to a different line.*callme.*" \ - "step" - - set cnt_after [get_value "args\[$my_number\]" "get count after step"] diff --git a/gdb-6.8-attach-signalled-detach-stopped.patch b/gdb-6.8-attach-signalled-detach-stopped.patch index e33715f..4339157 100644 --- a/gdb-6.8-attach-signalled-detach-stopped.patch +++ b/gdb-6.8-attach-signalled-detach-stopped.patch @@ -1,8 +1,8 @@ -Index: gdb-7.8.90.20150125/gdb/linux-nat.c +Index: gdb-7.9.50.20150531/gdb/linux-nat.c =================================================================== ---- gdb-7.8.90.20150125.orig/gdb/linux-nat.c 2015-01-25 08:42:49.381408899 +0100 -+++ gdb-7.8.90.20150125/gdb/linux-nat.c 2015-01-25 08:43:16.378525322 +0100 -@@ -174,6 +174,9 @@ blocked. */ +--- gdb-7.9.50.20150531.orig/gdb/linux-nat.c 2015-05-31 18:23:56.147494790 +0200 ++++ gdb-7.9.50.20150531/gdb/linux-nat.c 2015-05-31 18:24:01.935530759 +0200 +@@ -168,6 +168,9 @@ blocked. */ static struct target_ops *linux_ops; static struct target_ops linux_ops_saved; @@ -12,7 +12,7 @@ Index: gdb-7.8.90.20150125/gdb/linux-nat.c /* The method to call, if any, when a new thread is attached. */ static void (*linux_nat_new_thread) (struct lwp_info *); -@@ -924,6 +927,7 @@ linux_nat_post_attach_wait (ptid_t ptid, +@@ -981,6 +984,7 @@ linux_nat_post_attach_wait (ptid_t ptid, if (debug_linux_nat) fprintf_unfiltered (gdb_stdlog, "LNPAW: Attaching to a stopped process\n"); @@ -20,7 +20,7 @@ Index: gdb-7.8.90.20150125/gdb/linux-nat.c /* The process is definitely stopped. It is in a job control stop, unless the kernel predates the TASK_STOPPED / -@@ -1424,6 +1428,9 @@ get_pending_status (struct lwp_info *lp, +@@ -1468,6 +1472,9 @@ get_pending_status (struct lwp_info *lp, gdb_signal_to_string (signo)); } @@ -30,7 +30,7 @@ Index: gdb-7.8.90.20150125/gdb/linux-nat.c return 0; } -@@ -1537,6 +1544,8 @@ linux_nat_detach (struct target_ops *ops +@@ -1581,6 +1588,8 @@ linux_nat_detach (struct target_ops *ops } else linux_ops->to_detach (ops, args, from_tty); @@ -39,7 +39,7 @@ Index: gdb-7.8.90.20150125/gdb/linux-nat.c } /* Resume execution of the inferior process. If STEP is nonzero, -@@ -1741,6 +1750,14 @@ linux_nat_resume (struct target_ops *ops +@@ -1839,6 +1848,14 @@ linux_nat_resume (struct target_ops *ops return; } @@ -54,7 +54,7 @@ Index: gdb-7.8.90.20150125/gdb/linux-nat.c if (resume_many) iterate_over_lwps (ptid, linux_nat_resume_callback, lp); -@@ -3723,6 +3740,8 @@ linux_nat_mourn_inferior (struct target_ +@@ -3935,6 +3952,8 @@ linux_nat_mourn_inferior (struct target_ /* Let the arch-specific native code know this process is gone. */ linux_nat_forget_process (pid); @@ -63,10 +63,10 @@ Index: gdb-7.8.90.20150125/gdb/linux-nat.c } /* Convert a native/host siginfo object, into/from the siginfo in the -Index: gdb-7.8.90.20150125/gdb/testsuite/gdb.threads/attach-stopped.exp +Index: gdb-7.9.50.20150531/gdb/testsuite/gdb.threads/attach-stopped.exp =================================================================== ---- gdb-7.8.90.20150125.orig/gdb/testsuite/gdb.threads/attach-stopped.exp 2015-01-25 08:42:49.382408903 +0100 -+++ gdb-7.8.90.20150125/gdb/testsuite/gdb.threads/attach-stopped.exp 2015-01-25 08:43:16.379525327 +0100 +--- gdb-7.9.50.20150531.orig/gdb/testsuite/gdb.threads/attach-stopped.exp 2015-05-31 18:23:56.148494796 +0200 ++++ gdb-7.9.50.20150531/gdb/testsuite/gdb.threads/attach-stopped.exp 2015-05-31 18:24:01.935530759 +0200 @@ -61,7 +61,65 @@ proc corefunc { threadtype } { gdb_reinitialize_dir $srcdir/$subdir gdb_load ${binfile} @@ -134,12 +134,12 @@ Index: gdb-7.8.90.20150125/gdb/testsuite/gdb.threads/attach-stopped.exp set test "$threadtype: attach2 to stopped, after setting file" gdb_test_multiple "attach $testpid" "$test" { -Index: gdb-7.8.90.20150125/gdb/infrun.c +Index: gdb-7.9.50.20150531/gdb/infrun.c =================================================================== ---- gdb-7.8.90.20150125.orig/gdb/infrun.c 2015-01-25 08:42:49.385408916 +0100 -+++ gdb-7.8.90.20150125/gdb/infrun.c 2015-01-25 08:43:16.381525335 +0100 -@@ -600,6 +600,11 @@ holding the child stopped. Try \"set de - child_pid); +--- gdb-7.9.50.20150531.orig/gdb/infrun.c 2015-05-31 18:23:56.150494809 +0200 ++++ gdb-7.9.50.20150531/gdb/infrun.c 2015-05-31 18:24:01.938530778 +0200 +@@ -591,6 +591,11 @@ holding the child stopped. Try \"set de + target_pid_to_str (process_ptid)); } + /* We should check PID_WAS_STOPPED and detach it stopped accordingly. diff --git a/gdb-6.8-bz457187-largefile-test.patch b/gdb-6.8-bz457187-largefile-test.patch deleted file mode 100644 index cf8bfd6..0000000 --- a/gdb-6.8-bz457187-largefile-test.patch +++ /dev/null @@ -1,105 +0,0 @@ ---- /dev/null 2009-04-19 14:49:00.974648389 +0200 -+++ gdb-6.8/gdb/testsuite/gdb.arch/i386-biarch-core.exp 2009-04-19 16:30:12.000000000 +0200 -@@ -0,0 +1,61 @@ -+# This testcase is part of GDB, the GNU debugger. -+ -+# Copyright 2009 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 2 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, write to the Free Software -+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+# Test ability to load an elf64-i386 core file. The provided core file was -+# elf64-x8664 one but it got binary patched to i386: -+# Elf32_Ehdr.e_machine @0x12..0x13 -+# Elf64_Ehdr.e_machine @0x12..0x13 -+# #define EM_386 3 /* Intel 80386 */ -+# #define EM_X86_64 62 /* AMD x86-64 architecture */ -+# patch @0x12: 0x3E -> 0x03 -+ -+if { ![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"] } then { -+ verbose "Skipping i386-biarch-core test." -+ return -+} -+ -+set testfile "i386-biarch-core" -+set corebz2uufile ${srcdir}/${subdir}/${testfile}.core.bz2.uu -+set corefile ${objdir}/${subdir}/${testfile}.core -+# Entry point of the original executable. -+set address 0x400078 -+ -+if {[catch "system \"uudecode -o - ${corebz2uufile} | bzip2 -dc >${corefile}\""] != 0} { -+ untested "failed uudecode or bzip2" -+ return -1 -+} -+file stat ${corefile} corestat -+if {$corestat(size) != 102400} { -+ untested "uudecode or bzip2 produce invalid result" -+ return -1 -+} -+ -+gdb_exit -+gdb_start -+gdb_reinitialize_dir $srcdir/$subdir -+ -+# Wrongly built GDB complains by: -+# "..." is not a core dump: File format not recognized -+# As the provided test core has 64bit PRSTATUS i386 built GDB cannot parse it. -+# This is just a problem of the test care, real-world elf64-i386 file will have -+# 32bit PRSTATUS. One cannot prepare elf64-i386 core file from elf32-i386 by -+# objcopy as it corrupts the core file beyond all recognition. -+# "\r\nCore was generated by `\[^\r\n\]*'\\.\r\nProgram terminated with signal 11, Segmentation fault\\.\r\n.*" -+gdb_test "core-file ${corefile}" -+ -+gdb_test "x/i $address" "\r\n\[ \t\]*$address:\[ \t\]*hlt\[ \t\]*" ".text is readable" ---- /dev/null 2009-04-19 14:49:00.974648389 +0200 -+++ gdb-6.8/gdb/testsuite/gdb.arch/i386-biarch-core.S 2009-04-19 14:52:28.000000000 +0200 -@@ -0,0 +1,22 @@ -+/* This testcase is part of GDB, the GNU debugger. -+ -+ Copyright 2009 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 2 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, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ */ -+ -+ .globl _start -+_start: -+ hlt ---- /dev/null 2009-04-19 14:49:00.974648389 +0200 -+++ gdb-6.8/gdb/testsuite/gdb.arch/i386-biarch-core.core.bz2.uu 2009-04-19 15:02:12.000000000 +0200 -@@ -0,0 +1,13 @@ -+begin 600 i386-biarch-core.core.bz2 -+M0EIH.3%!629361`P1\P`!)?_____\9'@"8Q)6P380'9@'&#`0D@``"``%(`` -+M@`#`"!<(L`%F"(:$GH13::F-)M&D&U,AD:`--#)M0&FT0XR9--,)D9`P(Q-& -+M",(-&F``02)%38HT]0T`&AH```'H@``T^>9T*(,("&)SE`>`9@+GP=[,N)KB -+M'I8BL(L]N5TCY\%V]/?DB.BN*UZ'U@]TN7-]UJ5\_%0QTT<*086#%MHT7XVJ -+M9D"+C!"2*L:8D1XPD!`--M@*XT1H5RFYN&)(!0P0#:`I:;2;$5M&\*9"0@%: -+MK@X[T()M)9N7`D$VA!^63)%,;@8LT`(7\K&[7G;U:"B6'!GG+46ALOZF.2F- -+M!@>C*%86X$-]C2`KE;HG)UL(913VR2G]0BD:J=Z_`G@S,`W%.8RMS-#5P:J0 -+MAJ2\8&X?@DE;UF68QHM<,D`('::J65/S:PAG*R-09["8DBI)'V]Y.[(/AM*L -+M"X_O^V;%FY.S6Q]FM=D37>5F,%4-F1ZF#,CFJVU;H*^IT<(%0x7F should be printed as octal escapes. Zero means just print the value (e.g. it's an international character, and the terminal or window can cope.) */ -Index: gdb-7.7.90.20140613/gdb/extension.c +Index: gdb-7.9.50.20150520/gdb/extension.c =================================================================== ---- gdb-7.7.90.20140613.orig/gdb/extension.c 2014-06-13 03:59:36.000000000 +0200 -+++ gdb-7.7.90.20140613/gdb/extension.c 2014-06-13 23:11:32.434704853 +0200 -@@ -817,6 +817,9 @@ check_quit_flag (void) +--- gdb-7.9.50.20150520.orig/gdb/extension.c 2015-05-31 18:06:24.582002776 +0200 ++++ gdb-7.9.50.20150520/gdb/extension.c 2015-05-31 18:06:29.256031632 +0200 +@@ -833,6 +833,9 @@ check_quit_flag (void) int i, result = 0; const struct extension_language_defn *extlang; diff --git a/gdb-7.10.1.tar.bz2 b/gdb-7.10.1.tar.bz2 new file mode 100644 index 0000000..4f03ab1 --- /dev/null +++ b/gdb-7.10.1.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c04434ab0bb23aa886076c89684cc6ce5edc5f106c467492e7dfe8175c88346 +size 26852345 diff --git a/gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch b/gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch index 1c794ce..c42ff42 100644 --- a/gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch +++ b/gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch @@ -1,11 +1,11 @@ -Index: gdb-7.6.90.20140127/gdb/gdb_bfd.c +Index: gdb-7.9.90.20150709/gdb/gdb_bfd.c =================================================================== ---- gdb-7.6.90.20140127.orig/gdb/gdb_bfd.c 2014-02-06 17:39:46.370096290 +0100 -+++ gdb-7.6.90.20140127/gdb/gdb_bfd.c 2014-02-06 17:40:14.996127247 +0100 -@@ -29,12 +29,14 @@ - #ifdef HAVE_ZLIB_H - #include - #endif +--- gdb-7.9.90.20150709.orig/gdb/gdb_bfd.c 2015-07-09 18:23:59.344017882 +0200 ++++ gdb-7.9.90.20150709/gdb/gdb_bfd.c 2015-07-09 18:24:06.986083071 +0200 +@@ -24,12 +24,14 @@ + #include "hashtab.h" + #include "filestuff.h" + #include "vec.h" +#ifndef __sparc__ #ifdef HAVE_MMAP #include @@ -14,10 +14,10 @@ Index: gdb-7.6.90.20140127/gdb/gdb_bfd.c #endif #endif +#endif - - typedef bfd *bfdp; - DEF_VEC_P (bfdp); -@@ -210,6 +212,7 @@ free_one_bfd_section (bfd *abfd, asectio + #include "target.h" + #include "gdb/fileio.h" + #include "inferior.h" +@@ -397,6 +399,7 @@ free_one_bfd_section (bfd *abfd, asectio if (sect != NULL && sect->data != NULL) { @@ -25,7 +25,7 @@ Index: gdb-7.6.90.20140127/gdb/gdb_bfd.c #ifdef HAVE_MMAP if (sect->map_addr != NULL) { -@@ -220,6 +223,7 @@ free_one_bfd_section (bfd *abfd, asectio +@@ -407,6 +410,7 @@ free_one_bfd_section (bfd *abfd, asectio } else #endif @@ -33,7 +33,7 @@ Index: gdb-7.6.90.20140127/gdb/gdb_bfd.c xfree (sect->data); } } -@@ -371,6 +375,7 @@ gdb_bfd_map_section (asection *sectp, bf +@@ -558,6 +562,7 @@ gdb_bfd_map_section (asection *sectp, bf if (descriptor->data != NULL) goto done; @@ -41,7 +41,7 @@ Index: gdb-7.6.90.20140127/gdb/gdb_bfd.c #ifdef HAVE_MMAP if (!bfd_is_section_compressed (abfd, sectp)) { -@@ -405,6 +410,7 @@ gdb_bfd_map_section (asection *sectp, bf +@@ -592,6 +597,7 @@ gdb_bfd_map_section (asection *sectp, bf } } #endif /* HAVE_MMAP */ diff --git a/gdb-7.9.1.tar.bz2 b/gdb-7.9.1.tar.bz2 deleted file mode 100644 index 6f4b796..0000000 --- a/gdb-7.9.1.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6cb109cbbfb64a407863a15bc2a775a6bab52e5a6956a4ef3616b70cc4685b83 -size 25684304 diff --git a/gdb-archer-pie-addons.patch b/gdb-archer-pie-addons.patch index eadf807..7975daf 100644 --- a/gdb-archer-pie-addons.patch +++ b/gdb-archer-pie-addons.patch @@ -1,8 +1,8 @@ -Index: gdb-7.7.50.20140609/gdb/gdbtypes.h +Index: gdb-7.9.50.20150520/gdb/gdbtypes.h =================================================================== ---- gdb-7.7.50.20140609.orig/gdb/gdbtypes.h 2014-06-13 20:23:55.210626427 +0200 -+++ gdb-7.7.50.20140609/gdb/gdbtypes.h 2014-06-13 20:24:26.156658622 +0200 -@@ -440,6 +440,7 @@ enum field_loc_kind +--- gdb-7.9.50.20150520.orig/gdb/gdbtypes.h 2015-05-31 16:55:29.723475485 +0200 ++++ gdb-7.9.50.20150520/gdb/gdbtypes.h 2015-05-31 16:55:49.716601669 +0200 +@@ -462,6 +462,7 @@ enum field_loc_kind { FIELD_LOC_KIND_BITPOS, /**< bitpos */ FIELD_LOC_KIND_ENUMVAL, /**< enumval */ @@ -10,15 +10,15 @@ Index: gdb-7.7.50.20140609/gdb/gdbtypes.h FIELD_LOC_KIND_PHYSADDR, /**< physaddr */ FIELD_LOC_KIND_PHYSNAME, /**< physname */ FIELD_LOC_KIND_DWARF_BLOCK /**< dwarf_block */ -@@ -617,6 +618,7 @@ struct main_type - field. Otherwise, physname is the mangled label of the - static field. */ +@@ -513,6 +514,7 @@ union field_location + field. Otherwise, physname is the mangled label of the + static field. */ -+ /* This address is unrelocated by the objfile's ANOFFSET. */ - CORE_ADDR physaddr; - const char *physname; ++ /* This address is unrelocated by the objfile's ANOFFSET. */ + CORE_ADDR physaddr; + const char *physname; -@@ -1262,6 +1264,7 @@ extern void allocate_gnat_aux_type (stru +@@ -1386,6 +1388,7 @@ extern void set_type_vptr_basetype (stru #define FIELD_ENUMVAL_LVAL(thisfld) ((thisfld).loc.enumval) #define FIELD_ENUMVAL(thisfld) (FIELD_ENUMVAL_LVAL (thisfld) + 0) #define FIELD_STATIC_PHYSNAME(thisfld) ((thisfld).loc.physname) @@ -26,7 +26,7 @@ Index: gdb-7.7.50.20140609/gdb/gdbtypes.h #define FIELD_STATIC_PHYSADDR(thisfld) ((thisfld).loc.physaddr) #define FIELD_DWARF_BLOCK(thisfld) ((thisfld).loc.dwarf_block) #define SET_FIELD_BITPOS(thisfld, bitpos) \ -@@ -1273,6 +1276,7 @@ extern void allocate_gnat_aux_type (stru +@@ -1397,6 +1400,7 @@ extern void set_type_vptr_basetype (stru #define SET_FIELD_PHYSNAME(thisfld, name) \ (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSNAME, \ FIELD_STATIC_PHYSNAME (thisfld) = (name)) @@ -34,7 +34,7 @@ Index: gdb-7.7.50.20140609/gdb/gdbtypes.h #define SET_FIELD_PHYSADDR(thisfld, addr) \ (FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSADDR, \ FIELD_STATIC_PHYSADDR (thisfld) = (addr)) -@@ -1289,6 +1293,7 @@ extern void allocate_gnat_aux_type (stru +@@ -1413,6 +1417,7 @@ extern void set_type_vptr_basetype (stru #define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS (TYPE_FIELD (thistype, n)) #define TYPE_FIELD_ENUMVAL(thistype, n) FIELD_ENUMVAL (TYPE_FIELD (thistype, n)) #define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) FIELD_STATIC_PHYSNAME (TYPE_FIELD (thistype, n)) @@ -42,10 +42,10 @@ Index: gdb-7.7.50.20140609/gdb/gdbtypes.h #define TYPE_FIELD_STATIC_PHYSADDR(thistype, n) FIELD_STATIC_PHYSADDR (TYPE_FIELD (thistype, n)) #define TYPE_FIELD_DWARF_BLOCK(thistype, n) FIELD_DWARF_BLOCK (TYPE_FIELD (thistype, n)) #define TYPE_FIELD_ARTIFICIAL(thistype, n) FIELD_ARTIFICIAL(TYPE_FIELD(thistype,n)) -Index: gdb-7.7.50.20140609/gdb/jv-lang.c +Index: gdb-7.9.50.20150520/gdb/jv-lang.c =================================================================== ---- gdb-7.7.50.20140609.orig/gdb/jv-lang.c 2014-06-13 20:23:55.211626428 +0200 -+++ gdb-7.7.50.20140609/gdb/jv-lang.c 2014-06-13 20:23:56.278627534 +0200 +--- gdb-7.9.50.20150520.orig/gdb/jv-lang.c 2015-05-31 16:55:29.724475491 +0200 ++++ gdb-7.9.50.20150520/gdb/jv-lang.c 2015-05-31 16:55:30.820482408 +0200 @@ -427,7 +427,8 @@ java_link_class_type (struct gdbarch *gd fields = NULL; @@ -66,11 +66,11 @@ Index: gdb-7.7.50.20140609/gdb/jv-lang.c else SET_FIELD_BITPOS (TYPE_FIELD (type, i), 8 * boffset); if (accflags & 0x8000) /* FIELD_UNRESOLVED_FLAG */ -Index: gdb-7.7.50.20140609/gdb/value.c +Index: gdb-7.9.50.20150520/gdb/value.c =================================================================== ---- gdb-7.7.50.20140609.orig/gdb/value.c 2014-06-13 20:23:55.212626429 +0200 -+++ gdb-7.7.50.20140609/gdb/value.c 2014-06-13 20:23:56.279627535 +0200 -@@ -2783,7 +2783,8 @@ value_static_field (struct type *type, i +--- gdb-7.9.50.20150520.orig/gdb/value.c 2015-05-31 16:55:29.725475497 +0200 ++++ gdb-7.9.50.20150520/gdb/value.c 2015-05-31 16:55:30.821482415 +0200 +@@ -2951,7 +2951,8 @@ value_static_field (struct type *type, i { case FIELD_LOC_KIND_PHYSADDR: retval = value_at_lazy (TYPE_FIELD_TYPE (type, fieldno), diff --git a/gdb-archer.patch b/gdb-archer.patch index 613a917..c0f04cb 100644 --- a/gdb-archer.patch +++ b/gdb-archer.patch @@ -2,7 +2,7 @@ http://sourceware.org/gdb/wiki/ProjectArcher http://sourceware.org/gdb/wiki/ArcherBranchManagement GIT snapshot: -commit d1a09bf2f8e7e3f752a1bbeba135bc080bf0c865 +commit f0ee78c5ccefe388a64273353ecd5c99dae62558 tromey/python @@ -16,10 +16,10 @@ index 0000000..173b8ea +This branch originally held the Python code for gdb. It still exists +because a small amount of code here has not yet been merged upstream. diff --git a/gdb/Makefile.in b/gdb/Makefile.in -index be69b6f..a4483e4 100644 +index 95104ef..a9b198a 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in -@@ -1515,6 +1515,12 @@ stamp-h: $(srcdir)/config.in config.status +@@ -1534,6 +1534,12 @@ stamp-h: $(srcdir)/config.in config.status CONFIG_LINKS= \ $(SHELL) config.status @@ -33,11 +33,11 @@ index be69b6f..a4483e4 100644 $(SHELL) config.status --recheck diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in -index 00c70bb..f93ffdd 100644 +index 30cfd17..e977b30 100644 --- a/gdb/data-directory/Makefile.in +++ b/gdb/data-directory/Makefile.in -@@ -64,7 +64,10 @@ PYTHON_FILE_LIST = \ - gdb/printing.py \ +@@ -65,7 +65,10 @@ PYTHON_FILE_LIST = \ + gdb/unwinder.py \ gdb/prompt.py \ gdb/xmethod.py \ + gdb/types.py \ @@ -46,8 +46,8 @@ index 00c70bb..f93ffdd 100644 + gdb/command/pahole.py \ gdb/command/xmethods.py \ gdb/command/frame_filters.py \ - gdb/command/type_printers.py \ -@@ -74,6 +77,8 @@ PYTHON_FILE_LIST = \ + gdb/command/unwinders.py \ +@@ -76,6 +79,8 @@ PYTHON_FILE_LIST = \ gdb/function/__init__.py \ gdb/function/caller_is.py \ gdb/function/strfns.py \ @@ -57,7 +57,7 @@ index 00c70bb..f93ffdd 100644 gdb/printer/bound_registers.py diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo -index e086c33..5dfeb1d 100644 +index 1665372..c4caffc 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -1225,6 +1225,16 @@ for remote debugging. @@ -78,7 +78,7 @@ index e086c33..5dfeb1d 100644 @item -tui @cindex @code{--tui} diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi -index 234ce5c..e940125 100644 +index 57ec22e..13beb05 100644 --- a/gdb/doc/python.texi +++ b/gdb/doc/python.texi @@ -88,8 +88,6 @@ containing @code{end}. For example: @@ -111,7 +111,7 @@ index 05a38b2..9801fdf 100644 set variable $gdb_init_done = 1 diff --git a/gdb/main.c b/gdb/main.c -index accd927..ed211f6 100644 +index aecd60a..d0f7834 100644 --- a/gdb/main.c +++ b/gdb/main.c @@ -33,6 +33,7 @@ @@ -122,7 +122,7 @@ index accd927..ed211f6 100644 #include "source.h" #include "cli/cli-cmds.h" #include "objfiles.h" -@@ -444,6 +445,8 @@ captured_main (void *data) +@@ -453,6 +454,8 @@ captured_main (void *data) char *cdarg = NULL; char *ttyarg = NULL; @@ -131,7 +131,7 @@ index accd927..ed211f6 100644 /* These are static so that we can take their address in an initializer. */ static int print_help; -@@ -649,10 +652,14 @@ captured_main (void *data) +@@ -663,10 +666,14 @@ captured_main (void *data) {"args", no_argument, &set_args, 1}, {"l", required_argument, 0, 'l'}, {"return-child-result", no_argument, &return_child_result, 1}, @@ -147,7 +147,7 @@ index accd927..ed211f6 100644 { int option_index; -@@ -670,6 +677,9 @@ captured_main (void *data) +@@ -684,6 +691,9 @@ captured_main (void *data) case 0: /* Long option that just sets a flag. */ break; @@ -157,7 +157,7 @@ index accd927..ed211f6 100644 case OPT_SE: symarg = optarg; execarg = optarg; -@@ -851,7 +861,31 @@ captured_main (void *data) +@@ -864,7 +874,31 @@ captured_main (void *data) /* Now that gdb_init has created the initial inferior, we're in position to set args for that inferior. */ @@ -190,7 +190,7 @@ index accd927..ed211f6 100644 { /* The remaining options are the command-line options for the inferior. The first one is the sym/exec file, and the rest -@@ -1129,7 +1163,8 @@ captured_main (void *data) +@@ -1137,7 +1171,8 @@ captured_main (void *data) /* Read in the old history after all the command files have been read. */ @@ -200,7 +200,7 @@ index accd927..ed211f6 100644 if (batch_flag) { -@@ -1140,13 +1175,25 @@ captured_main (void *data) +@@ -1148,13 +1183,25 @@ captured_main (void *data) /* Show time and/or space usage. */ do_cleanups (pre_stat_chain); @@ -232,7 +232,7 @@ index accd927..ed211f6 100644 } /* No exit -- exit is through quit_command. */ } -@@ -1180,6 +1227,12 @@ print_gdb_help (struct ui_file *stream) +@@ -1188,6 +1235,12 @@ print_gdb_help (struct ui_file *stream) fputs_unfiltered (_("\ This is the GNU debugger. Usage:\n\n\ gdb [options] [executable-file [core-file or process-id]]\n\ @@ -245,10 +245,10 @@ index accd927..ed211f6 100644 gdb [options] --args executable-file [inferior-arguments ...]\n\n\ "), stream); fputs_unfiltered (_("\ -@@ -1225,6 +1278,13 @@ Output and user interface control:\n\n\ +@@ -1232,6 +1285,13 @@ Output and user interface control:\n\n\ + #endif fputs_unfiltered (_("\ --dbx DBX compatibility mode.\n\ - --xdb XDB compatibility mode.\n\ +"), stream); +#if HAVE_PYTHON + fputs_unfiltered (_("\ @@ -304,7 +304,7 @@ index 0000000..6fa48ff +IgnoreErrorsCommand () diff --git a/gdb/python/lib/gdb/command/pahole.py b/gdb/python/lib/gdb/command/pahole.py new file mode 100644 -index 0000000..dee04f5 +index 0000000..e08eaf5 --- /dev/null +++ b/gdb/python/lib/gdb/command/pahole.py @@ -0,0 +1,81 @@ @@ -365,19 +365,19 @@ index 0000000..dee04f5 + fieldsize = 8 * ftype.sizeof + + # TARGET_CHAR_BIT -+ print (' /* %3d %3d */' % (int (bitpos / 8), int (fieldsize / 8))) ++ print (' /* %3d %3d */' % (int (bitpos / 8), int (fieldsize / 8)), end = "") + bitpos = bitpos + fieldsize + + if ftype.code == gdb.TYPE_CODE_STRUCT: + self.pahole (ftype, level + 1, field.name) + else: -+ print (' ' * (2 + 2 * level)) ++ print (' ' * (2 + 2 * level), end = "") + print ('%s %s' % (str (ftype), field.name)) + + if level == 0: + self.maybe_print_hole(bitpos, 8 * type.sizeof) + -+ print (' ' * (14 + 2 * level)) ++ print (' ' * (14 + 2 * level), end = "") + print ('} %s' % name) + + def invoke (self, arg, from_tty): @@ -385,7 +385,7 @@ index 0000000..dee04f5 + type = type.strip_typedefs () + if type.code != gdb.TYPE_CODE_STRUCT: + raise (TypeError, '%s is not a struct type' % arg) -+ print (' ' * 14) ++ print (' ' * 14, end = "") + self.pahole (type, 0, '') + +Pahole() @@ -443,7 +443,7 @@ index 0000000..8742680 + +InScope () diff --git a/gdb/python/python.c b/gdb/python/python.c -index b1d8283..54a2d9b 100644 +index 4f88b0e..870a1ba 100644 --- a/gdb/python/python.c +++ b/gdb/python/python.c @@ -93,6 +93,8 @@ const struct extension_language_defn extension_language_python = @@ -455,7 +455,7 @@ index b1d8283..54a2d9b 100644 #include "target.h" #include "gdbthread.h" #include "interps.h" -@@ -1220,6 +1222,83 @@ gdbpy_print_stack (void) +@@ -1262,6 +1264,83 @@ gdbpy_print_stack (void) /* Return the current Progspace. There always is one. */ @@ -539,7 +539,7 @@ index b1d8283..54a2d9b 100644 static PyObject * gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2) -@@ -1913,6 +1992,8 @@ static PyMethodDef GdbMethods[] = +@@ -1982,6 +2061,8 @@ PyMethodDef python_GdbMethods[] = Evaluate command, a string, as a gdb CLI command. Optionally returns\n\ a Python String containing the output of the command if to_string is\n\ set to True." }, @@ -549,7 +549,7 @@ index b1d8283..54a2d9b 100644 "Return a gdb parameter's value" }, diff --git a/gdb/python/python.h b/gdb/python/python.h -index 9e99992..c776e59 100644 +index e6bfcca..688daa3 100644 --- a/gdb/python/python.h +++ b/gdb/python/python.h @@ -25,4 +25,6 @@ @@ -560,7 +560,7 @@ index 9e99992..c776e59 100644 + #endif /* GDB_PYTHON_H */ diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp -index 0b11e12..e35e829 100644 +index 9f25a48..88b0842 100644 --- a/gdb/testsuite/gdb.gdb/selftest.exp +++ b/gdb/testsuite/gdb.gdb/selftest.exp @@ -92,6 +92,10 @@ proc do_steps_and_nexts {} { @@ -575,7 +575,7 @@ index 0b11e12..e35e829 100644 set description "next over make_command_stats_cleanup and everything it calls" set command "next" diff --git a/gdb/testsuite/gdb.python/py-frame.exp b/gdb/testsuite/gdb.python/py-frame.exp -index e47f340..a7e0a52 100644 +index 33fdbe5..264d00f 100644 --- a/gdb/testsuite/gdb.python/py-frame.exp +++ b/gdb/testsuite/gdb.python/py-frame.exp @@ -95,6 +95,8 @@ gdb_test "python print ('result = %s' % f0.read_var ('a'))" " = 1" "test Frame.r @@ -588,7 +588,7 @@ index e47f340..a7e0a52 100644 gdb_test "python print ('result = %s' % (gdb.selected_frame ().read_register ('sp') == gdb.parse_and_eval ('\$sp')))" \ " = True" \ diff --git a/gdb/testsuite/gdb.python/py-value.exp b/gdb/testsuite/gdb.python/py-value.exp -index f081ff0..58cce09 100644 +index baa17b7..45ad67e 100644 --- a/gdb/testsuite/gdb.python/py-value.exp +++ b/gdb/testsuite/gdb.python/py-value.exp @@ -388,6 +388,15 @@ proc test_value_after_death {} { diff --git a/gdb-attach-fail-reasons-5of5.patch b/gdb-attach-fail-reasons-5of5.patch index cdd3c5f..c8c1f82 100644 --- a/gdb-attach-fail-reasons-5of5.patch +++ b/gdb-attach-fail-reasons-5of5.patch @@ -37,22 +37,22 @@ gdb/gdbserver/ (linux_create_inferior, linux_tracefork_child): Call it instead of direct ptrace. -Index: gdb-7.8.90.20150125/gdb/nat/linux-ptrace.c +Index: gdb-7.9.90.20150709/gdb/nat/linux-ptrace.c =================================================================== ---- gdb-7.8.90.20150125.orig/gdb/nat/linux-ptrace.c 2015-01-25 08:36:55.710884511 +0100 -+++ gdb-7.8.90.20150125/gdb/nat/linux-ptrace.c 2015-01-25 08:38:43.157347627 +0100 -@@ -25,6 +25,10 @@ - - #include +--- gdb-7.9.90.20150709.orig/gdb/nat/linux-ptrace.c 2015-07-09 18:24:13.705140384 +0200 ++++ gdb-7.9.90.20150709/gdb/nat/linux-ptrace.c 2015-07-09 18:24:24.911235973 +0200 +@@ -23,6 +23,10 @@ + #include "buffer.h" + #include "gdb_wait.h" +#ifdef HAVE_SELINUX_SELINUX_H +# include +#endif /* HAVE_SELINUX_SELINUX_H */ + - /* Stores the currently supported ptrace options. A value of - -1 means we did not check for features yet. A value of 0 means - there are no supported features. */ -@@ -53,6 +57,8 @@ linux_ptrace_attach_fail_reason (pid_t p + /* Stores the ptrace options supported by the running kernel. + A value of -1 means we did not check for features yet. A value + of 0 means there are no supported features. */ +@@ -47,6 +51,8 @@ linux_ptrace_attach_fail_reason (pid_t p buffer_xml_printf (buffer, _("process %d is a zombie " "- the process has already terminated"), (int) pid); @@ -61,7 +61,7 @@ Index: gdb-7.8.90.20150125/gdb/nat/linux-ptrace.c } /* See linux-ptrace.h. */ -@@ -595,6 +601,22 @@ linux_ptrace_init_warnings (void) +@@ -581,6 +587,22 @@ linux_ptrace_init_warnings (void) linux_ptrace_test_ret_to_nx (); } @@ -81,26 +81,26 @@ Index: gdb-7.8.90.20150125/gdb/nat/linux-ptrace.c +#endif /* HAVE_LIBSELINUX */ +} + - /* Set additional ptrace flags to use. Some such flags may be checked - by the implementation above. This function must be called before - any other function in this file; otherwise the flags may not take -Index: gdb-7.8.90.20150125/gdb/nat/linux-ptrace.h + /* Extract extended ptrace event from wait status. */ + + int +Index: gdb-7.9.90.20150709/gdb/nat/linux-ptrace.h =================================================================== ---- gdb-7.8.90.20150125.orig/gdb/nat/linux-ptrace.h 2015-01-25 08:37:02.800915071 +0100 -+++ gdb-7.8.90.20150125/gdb/nat/linux-ptrace.h 2015-01-25 08:38:16.565233009 +0100 -@@ -98,6 +98,7 @@ extern void linux_ptrace_attach_fail_rea +--- gdb-7.9.90.20150709.orig/gdb/nat/linux-ptrace.h 2015-07-09 18:24:13.706140392 +0200 ++++ gdb-7.9.90.20150709/gdb/nat/linux-ptrace.h 2015-07-09 18:24:24.912235981 +0200 +@@ -157,6 +157,7 @@ extern void linux_ptrace_attach_fail_rea extern char *linux_ptrace_attach_fail_reason_string (ptid_t ptid, int err); extern void linux_ptrace_init_warnings (void); +extern void linux_ptrace_create_warnings (struct buffer *buffer); + extern void linux_check_ptrace_features (void); extern void linux_enable_event_reporting (pid_t pid, int attached); extern void linux_disable_event_reporting (pid_t pid); - extern int linux_supports_tracefork (void); -Index: gdb-7.8.90.20150125/gdb/configure.ac +Index: gdb-7.9.90.20150709/gdb/configure.ac =================================================================== ---- gdb-7.8.90.20150125.orig/gdb/configure.ac 2015-01-25 08:36:55.712884520 +0100 -+++ gdb-7.8.90.20150125/gdb/configure.ac 2015-01-25 08:37:02.801915075 +0100 -@@ -2117,6 +2117,10 @@ case $host_os in +--- gdb-7.9.90.20150709.orig/gdb/configure.ac 2015-07-09 18:24:13.707140401 +0200 ++++ gdb-7.9.90.20150709/gdb/configure.ac 2015-07-09 18:24:24.913235990 +0200 +@@ -2150,6 +2150,10 @@ case $host_os in esac AC_DEFINE_UNQUOTED(GDBINIT,"$gdbinit",[The .gdbinit filename.]) @@ -111,11 +111,11 @@ Index: gdb-7.8.90.20150125/gdb/configure.ac dnl Handle optional features that can be enabled. # Support for --with-sysroot is a copy of GDB_AC_WITH_DIR, -Index: gdb-7.8.90.20150125/gdb/gdbserver/configure.ac +Index: gdb-7.9.90.20150709/gdb/gdbserver/configure.ac =================================================================== ---- gdb-7.8.90.20150125.orig/gdb/gdbserver/configure.ac 2015-01-25 08:36:55.712884520 +0100 -+++ gdb-7.8.90.20150125/gdb/gdbserver/configure.ac 2015-01-25 08:37:02.801915075 +0100 -@@ -461,6 +461,10 @@ if $want_ipa ; then +--- gdb-7.9.90.20150709.orig/gdb/gdbserver/configure.ac 2015-07-09 18:24:13.707140401 +0200 ++++ gdb-7.9.90.20150709/gdb/gdbserver/configure.ac 2015-07-09 18:24:24.913235990 +0200 +@@ -499,6 +499,10 @@ if $want_ipa ; then fi fi @@ -126,11 +126,11 @@ Index: gdb-7.8.90.20150125/gdb/gdbserver/configure.ac AC_SUBST(GDBSERVER_DEPFILES) AC_SUBST(GDBSERVER_LIBS) AC_SUBST(srv_xmlbuiltin) -Index: gdb-7.8.90.20150125/gdb/gdbserver/linux-low.c +Index: gdb-7.9.90.20150709/gdb/gdbserver/linux-low.c =================================================================== ---- gdb-7.8.90.20150125.orig/gdb/gdbserver/linux-low.c 2015-01-25 08:36:55.714884529 +0100 -+++ gdb-7.8.90.20150125/gdb/gdbserver/linux-low.c 2015-01-25 08:37:02.803915084 +0100 -@@ -591,6 +591,29 @@ add_lwp (ptid_t ptid) +--- gdb-7.9.90.20150709.orig/gdb/gdbserver/linux-low.c 2015-07-09 18:24:13.709140418 +0200 ++++ gdb-7.9.90.20150709/gdb/gdbserver/linux-low.c 2015-07-09 18:24:24.914235998 +0200 +@@ -755,6 +755,29 @@ add_lwp (ptid_t ptid) return lwp; } @@ -160,7 +160,7 @@ Index: gdb-7.8.90.20150125/gdb/gdbserver/linux-low.c /* Start an inferior process and returns its pid. ALLARGS is a vector of program-name and args. */ -@@ -632,7 +655,7 @@ linux_create_inferior (char *program, ch +@@ -778,7 +801,7 @@ linux_create_inferior (char *program, ch if (pid == 0) { close_most_fds (); @@ -169,11 +169,11 @@ Index: gdb-7.8.90.20150125/gdb/gdbserver/linux-low.c #ifndef __ANDROID__ /* Bionic doesn't use SIGRTMIN the way glibc does. */ signal (__SIGRTMIN + 1, SIG_DFL); -Index: gdb-7.8.90.20150125/gdb/inf-ptrace.c +Index: gdb-7.9.90.20150709/gdb/inf-ptrace.c =================================================================== ---- gdb-7.8.90.20150125.orig/gdb/inf-ptrace.c 2015-01-25 08:36:55.715884533 +0100 -+++ gdb-7.8.90.20150125/gdb/inf-ptrace.c 2015-01-25 08:37:02.803915084 +0100 -@@ -67,7 +67,15 @@ static void +--- gdb-7.9.90.20150709.orig/gdb/inf-ptrace.c 2015-07-09 18:24:13.710140426 +0200 ++++ gdb-7.9.90.20150709/gdb/inf-ptrace.c 2015-07-09 18:24:24.915236007 +0200 +@@ -79,7 +79,15 @@ static void inf_ptrace_me (void) { /* "Trace me, Dr. Memory!" */ @@ -189,36 +189,28 @@ Index: gdb-7.8.90.20150125/gdb/inf-ptrace.c } /* Start a new inferior Unix child process. EXEC_FILE is the file to -Index: gdb-7.8.90.20150125/gdb/linux-nat.c +Index: gdb-7.9.90.20150709/gdb/linux-nat.c =================================================================== ---- gdb-7.8.90.20150125.orig/gdb/linux-nat.c 2015-01-25 08:36:55.717884541 +0100 -+++ gdb-7.8.90.20150125/gdb/linux-nat.c 2015-01-25 08:37:52.054127362 +0100 -@@ -1109,6 +1109,7 @@ linux_nat_create_inferior (struct target - #ifdef HAVE_PERSONALITY - int personality_orig = 0, personality_set = 0; - #endif /* HAVE_PERSONALITY */ +--- gdb-7.9.90.20150709.orig/gdb/linux-nat.c 2015-07-09 18:24:13.712140443 +0200 ++++ gdb-7.9.90.20150709/gdb/linux-nat.c 2015-07-09 18:24:24.916236015 +0200 +@@ -1184,6 +1184,7 @@ linux_nat_create_inferior (struct target + { + struct cleanup *restore_personality + = maybe_disable_address_space_randomization (disable_randomization); + volatile struct gdb_exception ex; /* The fork_child mechanism is synchronous and calls target_wait, so we have to mask the async mode. */ -@@ -1133,7 +1134,10 @@ linux_nat_create_inferior (struct target +@@ -1191,7 +1192,28 @@ linux_nat_create_inferior (struct target /* Make sure we report all signals during startup. */ linux_nat_pass_signals (ops, 0, NULL); - linux_ops->to_create_inferior (ops, exec_file, allargs, env, from_tty); -+ TRY_CATCH (ex, RETURN_MASK_ERROR) ++ TRY + { + linux_ops->to_create_inferior (ops, exec_file, allargs, env, from_tty); + } - - #ifdef HAVE_PERSONALITY - if (personality_set) -@@ -1145,6 +1149,24 @@ linux_nat_create_inferior (struct target - safe_strerror (errno)); - } - #endif /* HAVE_PERSONALITY */ -+ -+ if (ex.reason < 0) ++ CATCH (ex, RETURN_MASK_ERROR) + { + struct buffer buffer; + char *message, *buffer_s; @@ -235,14 +227,15 @@ Index: gdb-7.8.90.20150125/gdb/linux-nat.c + + throw_error (ex.error, "%s%s", buffer_s, message); + } - } ++ END_CATCH - /* Callback for linux_proc_attach_tgid_threads. Attach to PTID if not -Index: gdb-7.8.90.20150125/gdb/config.in + do_cleanups (restore_personality); + } +Index: gdb-7.9.90.20150709/gdb/config.in =================================================================== ---- gdb-7.8.90.20150125.orig/gdb/config.in 2015-01-25 08:36:55.718884546 +0100 -+++ gdb-7.8.90.20150125/gdb/config.in 2015-01-25 08:37:02.805915092 +0100 -@@ -213,6 +213,9 @@ +--- gdb-7.9.90.20150709.orig/gdb/config.in 2015-07-09 18:24:13.713140452 +0200 ++++ gdb-7.9.90.20150709/gdb/config.in 2015-07-09 18:24:24.916236015 +0200 +@@ -264,6 +264,9 @@ /* Define if librpm library is being used. */ #undef HAVE_LIBRPM @@ -252,7 +245,7 @@ Index: gdb-7.8.90.20150125/gdb/config.in /* Define to 1 if you have the header file. */ #undef HAVE_LIBUNWIND_IA64_H -@@ -342,6 +345,9 @@ +@@ -396,6 +399,9 @@ /* Define to 1 if you have the `scm_new_smob' function. */ #undef HAVE_SCM_NEW_SMOB @@ -262,11 +255,11 @@ Index: gdb-7.8.90.20150125/gdb/config.in /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE -Index: gdb-7.8.90.20150125/gdb/configure +Index: gdb-7.9.90.20150709/gdb/configure =================================================================== ---- gdb-7.8.90.20150125.orig/gdb/configure 2015-01-25 08:36:55.722884563 +0100 -+++ gdb-7.8.90.20150125/gdb/configure 2015-01-25 08:37:02.809915110 +0100 -@@ -13270,6 +13270,64 @@ cat >>confdefs.h <<_ACEOF +--- gdb-7.9.90.20150709.orig/gdb/configure 2015-07-09 18:24:13.718140495 +0200 ++++ gdb-7.9.90.20150709/gdb/configure 2015-07-09 18:24:24.920236049 +0200 +@@ -14228,6 +14228,64 @@ cat >>confdefs.h <<_ACEOF _ACEOF @@ -331,11 +324,11 @@ Index: gdb-7.8.90.20150125/gdb/configure # Support for --with-sysroot is a copy of GDB_AC_WITH_DIR, # except that the argument to --with-sysroot is optional. -Index: gdb-7.8.90.20150125/gdb/gdbserver/config.in +Index: gdb-7.9.90.20150709/gdb/gdbserver/config.in =================================================================== ---- gdb-7.8.90.20150125.orig/gdb/gdbserver/config.in 2015-01-25 08:36:55.724884572 +0100 -+++ gdb-7.8.90.20150125/gdb/gdbserver/config.in 2015-01-25 08:37:02.809915110 +0100 -@@ -75,6 +75,9 @@ +--- gdb-7.9.90.20150709.orig/gdb/gdbserver/config.in 2015-07-09 18:24:13.719140503 +0200 ++++ gdb-7.9.90.20150709/gdb/gdbserver/config.in 2015-07-09 18:24:24.920236049 +0200 +@@ -113,6 +113,9 @@ /* Define to 1 if you have the `mcheck' library (-lmcheck). */ #undef HAVE_LIBMCHECK @@ -345,9 +338,9 @@ Index: gdb-7.8.90.20150125/gdb/gdbserver/config.in /* Define if the target supports branch tracing. */ #undef HAVE_LINUX_BTRACE -@@ -142,6 +145,9 @@ - /* Define to 1 if you have the `pwrite' function. */ - #undef HAVE_PWRITE +@@ -189,6 +192,9 @@ + /* Define to 1 if you have the `setns' function. */ + #undef HAVE_SETNS +/* Define to 1 if you have the header file. */ +#undef HAVE_SELINUX_SELINUX_H @@ -355,11 +348,11 @@ Index: gdb-7.8.90.20150125/gdb/gdbserver/config.in /* Define to 1 if you have the header file. */ #undef HAVE_SGTTY_H -Index: gdb-7.8.90.20150125/gdb/gdbserver/configure +Index: gdb-7.9.90.20150709/gdb/gdbserver/configure =================================================================== ---- gdb-7.8.90.20150125.orig/gdb/gdbserver/configure 2015-01-25 08:36:55.726884580 +0100 -+++ gdb-7.8.90.20150125/gdb/gdbserver/configure 2015-01-25 08:37:02.811915118 +0100 -@@ -6199,6 +6199,64 @@ if $want_ipa ; then +--- gdb-7.9.90.20150709.orig/gdb/gdbserver/configure 2015-07-09 18:24:13.721140520 +0200 ++++ gdb-7.9.90.20150709/gdb/gdbserver/configure 2015-07-09 18:24:24.922236066 +0200 +@@ -7022,6 +7022,64 @@ if $want_ipa ; then fi fi diff --git a/gdb-btrobust.patch b/gdb-btrobust.patch index 32c3d4c..f8a4aa0 100644 --- a/gdb-btrobust.patch +++ b/gdb-btrobust.patch @@ -3,19 +3,19 @@ printed, but a default backtrace will occur in this case. -- -Index: gdb-7.8.90.20150214/gdb/python/py-framefilter.c +Index: gdb-7.9.50.20150520/gdb/python/py-framefilter.c =================================================================== ---- gdb-7.8.90.20150214.orig/gdb/python/py-framefilter.c 2015-02-14 17:35:12.277653200 +0100 -+++ gdb-7.8.90.20150214/gdb/python/py-framefilter.c 2015-02-14 17:36:15.737953789 +0100 -@@ -1506,6 +1506,7 @@ gdbpy_apply_frame_filter (const struct e - volatile struct gdb_exception except; +--- gdb-7.9.50.20150520.orig/gdb/python/py-framefilter.c 2015-05-31 17:36:34.681952530 +0200 ++++ gdb-7.9.50.20150520/gdb/python/py-framefilter.c 2015-05-31 17:55:01.884788031 +0200 +@@ -1523,6 +1523,7 @@ gdbpy_apply_frame_filter (const struct e + PyObject *iterable; PyObject *item; htab_t levels_printed; + int count_printed = 0; if (!gdb_python_initialized) return EXT_LANG_BT_NO_FILTERS; -@@ -1525,24 +1526,7 @@ gdbpy_apply_frame_filter (const struct e +@@ -1543,24 +1544,7 @@ gdbpy_apply_frame_filter (const struct e iterable = bootstrap_python_frame_filters (frame, frame_low, frame_high); if (iterable == NULL) @@ -41,7 +41,7 @@ Index: gdb-7.8.90.20150214/gdb/python/py-framefilter.c /* If iterable is None, then there are no frame filters registered. If this is the case, defer to default GDB printing routines in MI -@@ -1573,15 +1557,40 @@ gdbpy_apply_frame_filter (const struct e +@@ -1591,15 +1575,40 @@ gdbpy_apply_frame_filter (const struct e error and continue with other frames. */ if (success == EXT_LANG_BT_ERROR) gdbpy_print_stack (); diff --git a/gdb-bz541866-rwatch-before-run.patch b/gdb-bz541866-rwatch-before-run.patch index d8dc9bd..89f52d7 100644 --- a/gdb-bz541866-rwatch-before-run.patch +++ b/gdb-bz541866-rwatch-before-run.patch @@ -1,20 +1,20 @@ -Index: gdb-7.8.50.20141228/gdb/config/i386/linux64.mh +Index: gdb-7.9.90.20150709/gdb/config/i386/linux64.mh =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/config/i386/linux64.mh 2015-01-01 17:12:53.965472227 +0100 -+++ gdb-7.8.50.20141228/gdb/config/i386/linux64.mh 2015-01-01 17:12:55.367471414 +0100 -@@ -6,7 +6,7 @@ NATDEPFILES= inf-ptrace.o fork-child.o \ - proc-service.o linux-thread-db.o linux-fork.o \ +--- gdb-7.9.90.20150709.orig/gdb/config/i386/linux64.mh 2015-07-09 18:23:32.173786118 +0200 ++++ gdb-7.9.90.20150709/gdb/config/i386/linux64.mh 2015-07-09 18:23:51.823953736 +0200 +@@ -7,7 +7,7 @@ NATDEPFILES= inf-ptrace.o fork-child.o \ linux-procfs.o linux-ptrace.o linux-btrace.o \ - linux-waitpid.o + linux-waitpid.o linux-personality.o x86-linux.o \ + x86-linux-dregs.o linux-namespaces.o -NAT_FILE= config/nm-linux.h +NAT_FILE= nm-linux64.h NAT_CDEPS = $(srcdir)/proc-service.list # The dynamically loaded libthread_db needs access to symbols in the -Index: gdb-7.8.50.20141228/gdb/config/i386/linux.mh +Index: gdb-7.9.90.20150709/gdb/config/i386/linux.mh =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/config/i386/linux.mh 2015-01-01 17:12:55.367471414 +0100 -+++ gdb-7.8.50.20141228/gdb/config/i386/linux.mh 2015-01-01 17:13:07.568464342 +0100 +--- gdb-7.9.90.20150709.orig/gdb/config/i386/linux.mh 2015-07-09 18:23:30.527772078 +0200 ++++ gdb-7.9.90.20150709/gdb/config/i386/linux.mh 2015-07-09 18:23:32.174786127 +0200 @@ -1,6 +1,6 @@ # Host: Intel 386 running GNU/Linux. @@ -23,10 +23,10 @@ Index: gdb-7.8.50.20141228/gdb/config/i386/linux.mh NATDEPFILES= inf-ptrace.o fork-child.o \ x86-nat.o x86-dregs.o i386-linux-nat.o x86-linux-nat.o \ proc-service.o linux-thread-db.o \ -Index: gdb-7.8.50.20141228/gdb/config/i386/nm-linux.h +Index: gdb-7.9.90.20150709/gdb/config/i386/nm-linux.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/config/i386/nm-linux.h 2015-01-01 17:12:55.368471414 +0100 ++++ gdb-7.9.90.20150709/gdb/config/i386/nm-linux.h 2015-07-09 18:23:32.174786127 +0200 @@ -0,0 +1,28 @@ +/* Native support for GNU/Linux i386. + @@ -56,10 +56,10 @@ Index: gdb-7.8.50.20141228/gdb/config/i386/nm-linux.h +#define target_can_use_hardware_watchpoint(type, cnt, ot) 1 + +#endif /* NM_LINUX64_H */ -Index: gdb-7.8.50.20141228/gdb/config/i386/nm-linux64.h +Index: gdb-7.9.90.20150709/gdb/config/i386/nm-linux64.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/config/i386/nm-linux64.h 2015-01-01 17:12:55.368471414 +0100 ++++ gdb-7.9.90.20150709/gdb/config/i386/nm-linux64.h 2015-07-09 18:23:32.174786127 +0200 @@ -0,0 +1,28 @@ +/* Native support for GNU/Linux amd64. + @@ -89,26 +89,26 @@ Index: gdb-7.8.50.20141228/gdb/config/i386/nm-linux64.h +#define target_can_use_hardware_watchpoint(type, cnt, ot) 1 + +#endif /* NM_LINUX64_H */ -Index: gdb-7.8.50.20141228/gdb/target.h +Index: gdb-7.9.90.20150709/gdb/target.h =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/target.h 2015-01-01 17:12:53.967472226 +0100 -+++ gdb-7.8.50.20141228/gdb/target.h 2015-01-01 17:12:55.368471414 +0100 -@@ -1754,9 +1754,11 @@ extern char *target_thread_name (struct - bp_hardware_breakpoint. CNT is the number of such watchpoints used so far - (including this one?). OTHERTYPE is who knows what... */ +--- gdb-7.9.90.20150709.orig/gdb/target.h 2015-07-09 18:23:30.528772086 +0200 ++++ gdb-7.9.90.20150709/gdb/target.h 2015-07-09 18:23:32.175786135 +0200 +@@ -1849,9 +1849,11 @@ extern char *target_thread_name (struct + CNT is the number of such watchpoints used so far, including this + one. OTHERTYPE is who knows what... */ +#ifndef target_can_use_hardware_watchpoint #define target_can_use_hardware_watchpoint(TYPE,CNT,OTHERTYPE) \ (*current_target.to_can_use_hw_breakpoint) (¤t_target, \ - TYPE, CNT, OTHERTYPE); + TYPE, CNT, OTHERTYPE) +#endif /* Returns the number of debug registers needed to watch the given memory region, or zero if not supported. */ -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp +Index: gdb-7.9.90.20150709/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp 2015-01-01 17:12:55.369471413 +0100 ++++ gdb-7.9.90.20150709/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp 2015-07-09 18:23:32.175786135 +0200 @@ -0,0 +1,40 @@ +# Copyright 2009, 2010 Free Software Foundation, Inc. + diff --git a/gdb-dts-rhel6-python-compat.patch b/gdb-dts-rhel6-python-compat.patch index ea72be0..e4d3ac7 100644 --- a/gdb-dts-rhel6-python-compat.patch +++ b/gdb-dts-rhel6-python-compat.patch @@ -1,9 +1,9 @@ https://bugzilla.redhat.com/show_bug.cgi?id=1020004 -Index: gdb-7.8.50.20141228/gdb/data-directory/Makefile.in +Index: gdb-7.9.50.20150520/gdb/data-directory/Makefile.in =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/data-directory/Makefile.in 2015-01-05 22:51:10.707756810 +0100 -+++ gdb-7.8.50.20141228/gdb/data-directory/Makefile.in 2015-01-05 22:51:48.608923139 +0100 +--- gdb-7.9.50.20150520.orig/gdb/data-directory/Makefile.in 2015-05-31 18:05:43.046746351 +0200 ++++ gdb-7.9.50.20150520/gdb/data-directory/Makefile.in 2015-05-31 18:05:58.483841655 +0200 @@ -60,6 +60,8 @@ PYTHON_FILE_LIST = \ gdb/frames.py \ gdb/FrameIterator.py \ @@ -12,8 +12,8 @@ Index: gdb-7.8.50.20141228/gdb/data-directory/Makefile.in + gdb/backtrace.py \ gdb/types.py \ gdb/printing.py \ - gdb/prompt.py \ -@@ -74,6 +76,7 @@ PYTHON_FILE_LIST = \ + gdb/unwinder.py \ +@@ -76,6 +78,7 @@ PYTHON_FILE_LIST = \ gdb/command/pretty_printers.py \ gdb/command/prompt.py \ gdb/command/explore.py \ @@ -21,10 +21,10 @@ Index: gdb-7.8.50.20141228/gdb/data-directory/Makefile.in gdb/function/__init__.py \ gdb/function/caller_is.py \ gdb/function/strfns.py \ -Index: gdb-7.8.50.20141228/gdb/python/lib/gdb/FrameWrapper.py +Index: gdb-7.9.50.20150520/gdb/python/lib/gdb/FrameWrapper.py =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/python/lib/gdb/FrameWrapper.py 2015-01-05 22:51:24.706818245 +0100 ++++ gdb-7.9.50.20150520/gdb/python/lib/gdb/FrameWrapper.py 2015-05-31 18:05:58.484841661 +0200 @@ -0,0 +1,122 @@ +# Wrapper API for frames. + @@ -148,10 +148,10 @@ Index: gdb-7.8.50.20141228/gdb/python/lib/gdb/FrameWrapper.py + + def __getattr__ (self, name): + return getattr (self.frame, name) -Index: gdb-7.8.50.20141228/gdb/python/lib/gdb/backtrace.py +Index: gdb-7.9.50.20150520/gdb/python/lib/gdb/backtrace.py =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/python/lib/gdb/backtrace.py 2015-01-05 22:51:24.706818245 +0100 ++++ gdb-7.9.50.20150520/gdb/python/lib/gdb/backtrace.py 2015-05-31 18:05:58.484841661 +0200 @@ -0,0 +1,42 @@ +# Filtering backtrace. + @@ -195,10 +195,10 @@ Index: gdb-7.8.50.20141228/gdb/python/lib/gdb/backtrace.py + return iter + return old_frame_filter (iter) + -Index: gdb-7.8.50.20141228/gdb/python/lib/gdb/command/backtrace.py +Index: gdb-7.9.50.20150520/gdb/python/lib/gdb/command/backtrace.py =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/python/lib/gdb/command/backtrace.py 2015-01-05 22:51:24.707818249 +0100 ++++ gdb-7.9.50.20150520/gdb/python/lib/gdb/command/backtrace.py 2015-05-31 18:05:58.484841661 +0200 @@ -0,0 +1,106 @@ +# New backtrace command. + diff --git a/gdb-enable-count-crash.patch b/gdb-enable-count-crash.patch deleted file mode 100644 index 6b8fa07..0000000 --- a/gdb-enable-count-crash.patch +++ /dev/null @@ -1,85 +0,0 @@ -http://sourceware.org/ml/gdb-patches/2013-06/msg00788.html -Subject: [PATCH] "enable count" user input error handling (PR gdb/15678) - -Typing "enable count" by itself crashes GDB. Also, if you omit the -breakpoint number/range, the error message is not very clear: - -(gdb) enable count 2 -warning: bad breakpoint number at or near '' -(gdb) enable count -Segmentation fault (core dumped) - -With this patch, the error messages are slightly more helpful: - -(gdb) enable count 2 -Argument required (one or more breakpoint numbers). -(gdb) enable count -Argument required (hit count). - -They are not as helpful to the user as I would like, but it's better -than crashing. Suggestions are welcome. - -Simon - -gdb/ChangeLog: -2013-06-26 Simon Marchi - - * breakpoint.c (map_breakpoint_numbers): Check for empty args - string. - (enable_count_command): Check args for NULL value. - -gdb/testsuite/ChangeLog: -2013-06-26 Simon Marchi - - * gdb.base/ena-dis-br.exp: Test "enable count" for bad user input. ---- - gdb/breakpoint.c | 9 +++++++-- - gdb/testsuite/gdb.base/ena-dis-br.exp | 8 ++++++++ - 2 files changed, 15 insertions(+), 2 deletions(-) - -Index: gdb-7.8.50.20141228/gdb/breakpoint.c -=================================================================== ---- gdb-7.8.50.20141228.orig/gdb/breakpoint.c 2015-01-05 22:21:47.631801558 +0100 -+++ gdb-7.8.50.20141228/gdb/breakpoint.c 2015-01-05 22:26:13.165005049 +0100 -@@ -14849,7 +14849,7 @@ map_breakpoint_numbers (char *args, void - int match; - struct get_number_or_range_state state; - -- if (args == 0) -+ if (args == 0 || *args == '\0') - error_no_arg (_("one or more breakpoint numbers")); - - init_number_or_range (&state, args); -@@ -15186,7 +15186,12 @@ do_map_enable_count_breakpoint (struct b - static void - enable_count_command (char *args, int from_tty) - { -- int count = get_number (&args); -+ int count; -+ -+ if (args == NULL) -+ error_no_arg (_("hit count")); -+ -+ count = get_number (&args); - - map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count); - } -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.base/ena-dis-br.exp -=================================================================== ---- gdb-7.8.50.20141228.orig/gdb/testsuite/gdb.base/ena-dis-br.exp 2015-01-05 22:26:13.165005049 +0100 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.base/ena-dis-br.exp 2015-01-05 22:26:51.357178150 +0100 -@@ -151,6 +151,14 @@ set bp [break_at $bp_location7 "line $bp - - set bp2 [break_at marker1 " line $bp_location15"] - -+gdb_test "enable count" \ -+ "Argument required \\(hit count\\)\\." \ -+ "enable count missing arguments" -+ -+gdb_test "enable count 2" \ -+ "Argument required \\(one or more breakpoint numbers\\)\\." \ -+ "enable count missing last argument" -+ - gdb_test_no_output "enable count 2 $bp" "disable break with count" - - gdb_test "continue" \ diff --git a/gdb-glibc-vdso-workaround.patch b/gdb-glibc-vdso-workaround.patch index fc1bba8..c503d63 100644 --- a/gdb-glibc-vdso-workaround.patch +++ b/gdb-glibc-vdso-workaround.patch @@ -11,11 +11,13 @@ gdb/ Work around PR libc/13097. * solib.c (update_solib_list): Ignore "linux-vdso.so.1". ---- a/gdb/solib.c -+++ b/gdb/solib.c -@@ -783,8 +783,11 @@ update_solib_list (int from_tty, struct target_ops *target) +Index: gdb-7.9.50.20150520/gdb/solib.c +=================================================================== +--- gdb-7.9.50.20150520.orig/gdb/solib.c 2015-05-31 17:04:16.870802493 +0200 ++++ gdb-7.9.50.20150520/gdb/solib.c 2015-05-31 17:04:38.824941054 +0200 +@@ -893,8 +893,11 @@ update_solib_list (int from_tty, struct - TRY_CATCH (e, RETURN_MASK_ERROR) + TRY { - /* Fill in the rest of the `struct so_list' node. */ - if (!solib_map_sections (i)) @@ -27,4 +29,3 @@ gdb/ { not_found++; if (not_found_filename == NULL) - diff --git a/gdb-libstdc++-v3-python-r155978.tar.bz2 b/gdb-libstdc++-v3-python-r155978.tar.bz2 deleted file mode 100644 index a04f820..0000000 --- a/gdb-libstdc++-v3-python-r155978.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1877172a7efbf7540290471e64816c9549b24a65e825f0e1a725ac950b4e5029 -size 11744 diff --git a/gdb-libstdc++-v3-python-r225521.tar.bz2 b/gdb-libstdc++-v3-python-r225521.tar.bz2 new file mode 100644 index 0000000..12c82e0 --- /dev/null +++ b/gdb-libstdc++-v3-python-r225521.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c620865e7c00c9c2e644fa693a11170bbf2fec83c078c597e61606c38d2e2562 +size 19254 diff --git a/gdb-no-dg-extract-results-py.patch b/gdb-no-dg-extract-results-py.patch deleted file mode 100644 index 7da1c1d..0000000 --- a/gdb-no-dg-extract-results-py.patch +++ /dev/null @@ -1,589 +0,0 @@ -diff -dup -ruNp gdb-7.8.90.20150202-orig/gdb/testsuite/dg-extract-results.py gdb-7.8.90.20150202/gdb/testsuite/dg-extract-results.py ---- gdb-7.8.90.20150202-orig/gdb/testsuite/dg-extract-results.py 2015-02-02 02:58:29.000000000 +0100 -+++ gdb-7.8.90.20150202/gdb/testsuite/dg-extract-results.py 1970-01-01 01:00:00.000000000 +0100 -@@ -1,585 +0,0 @@ --#!/usr/bin/python --# --# Copyright (C) 2014-2015 Free Software Foundation, Inc. --# --# This script 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, or (at your option) --# any later version. -- --import sys --import getopt --import re --import io --from datetime import datetime --from operator import attrgetter -- --# True if unrecognised lines should cause a fatal error. Might want to turn --# this on by default later. --strict = False -- --# True if the order of .log segments should match the .sum file, false if --# they should keep the original order. --sort_logs = True -- --# A version of open() that is safe against whatever binary output --# might be added to the log. --def safe_open (filename): -- if sys.version_info >= (3, 0): -- return open (filename, 'r', errors = 'surrogateescape') -- return open (filename, 'r') -- --# Force stdout to handle escape sequences from a safe_open file. --if sys.version_info >= (3, 0): -- sys.stdout = io.TextIOWrapper (sys.stdout.buffer, -- errors = 'surrogateescape') -- --class Named: -- def __init__ (self, name): -- self.name = name -- --class ToolRun (Named): -- def __init__ (self, name): -- Named.__init__ (self, name) -- # The variations run for this tool, mapped by --target_board name. -- self.variations = dict() -- -- # Return the VariationRun for variation NAME. -- def get_variation (self, name): -- if name not in self.variations: -- self.variations[name] = VariationRun (name) -- return self.variations[name] -- --class VariationRun (Named): -- def __init__ (self, name): -- Named.__init__ (self, name) -- # A segment of text before the harness runs start, describing which -- # baseboard files were loaded for the target. -- self.header = None -- # The harnesses run for this variation, mapped by filename. -- self.harnesses = dict() -- # A list giving the number of times each type of result has -- # been seen. -- self.counts = [] -- -- # Return the HarnessRun for harness NAME. -- def get_harness (self, name): -- if name not in self.harnesses: -- self.harnesses[name] = HarnessRun (name) -- return self.harnesses[name] -- --class HarnessRun (Named): -- def __init__ (self, name): -- Named.__init__ (self, name) -- # Segments of text that make up the harness run, mapped by a test-based -- # key that can be used to order them. -- self.segments = dict() -- # Segments of text that make up the harness run but which have -- # no recognized test results. These are typically harnesses that -- # are completely skipped for the target. -- self.empty = [] -- # A list of results. Each entry is a pair in which the first element -- # is a unique sorting key and in which the second is the full -- # PASS/FAIL line. -- self.results = [] -- -- # Add a segment of text to the harness run. If the segment includes -- # test results, KEY is an example of one of them, and can be used to -- # combine the individual segments in order. If the segment has no -- # test results (e.g. because the harness doesn't do anything for the -- # current configuration) then KEY is None instead. In that case -- # just collect the segments in the order that we see them. -- def add_segment (self, key, segment): -- if key: -- assert key not in self.segments -- self.segments[key] = segment -- else: -- self.empty.append (segment) -- --class Segment: -- def __init__ (self, filename, start): -- self.filename = filename -- self.start = start -- self.lines = 0 -- --class Prog: -- def __init__ (self): -- # The variations specified on the command line. -- self.variations = [] -- # The variations seen in the input files. -- self.known_variations = set() -- # The tools specified on the command line. -- self.tools = [] -- # Whether to create .sum rather than .log output. -- self.do_sum = True -- # Regexps used while parsing. -- self.test_run_re = re.compile (r'^Test Run By (\S+) on (.*)$') -- self.tool_re = re.compile (r'^\t\t=== (.*) tests ===$') -- self.result_re = re.compile (r'^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED' -- r'|WARNING|ERROR|UNSUPPORTED|UNTESTED' -- r'|KFAIL):\s*(.+)') -- self.completed_re = re.compile (r'.* completed at (.*)') -- # Pieces of text to write at the head of the output. -- # start_line is a pair in which the first element is a datetime -- # and in which the second is the associated 'Test Run By' line. -- self.start_line = None -- self.native_line = '' -- self.target_line = '' -- self.host_line = '' -- self.acats_premable = '' -- # Pieces of text to write at the end of the output. -- # end_line is like start_line but for the 'runtest completed' line. -- self.acats_failures = [] -- self.version_output = '' -- self.end_line = None -- # Known summary types. -- self.count_names = [ -- '# of expected passes\t\t', -- '# of unexpected failures\t', -- '# of unexpected successes\t', -- '# of expected failures\t\t', -- '# of unknown successes\t\t', -- '# of known failures\t\t', -- '# of untested testcases\t\t', -- '# of unresolved testcases\t', -- '# of unsupported tests\t\t' -- ] -- self.runs = dict() -- -- def usage (self): -- name = sys.argv[0] -- sys.stderr.write ('Usage: ' + name -- + ''' [-t tool] [-l variant-list] [-L] log-or-sum-file ... -- -- tool The tool (e.g. g++, libffi) for which to create a -- new test summary file. If not specified then output -- is created for all tools. -- variant-list One or more test variant names. If the list is -- not specified then one is constructed from all -- variants in the files for . -- sum-file A test summary file with the format of those -- created by runtest from DejaGnu. -- If -L is used, merge *.log files instead of *.sum. In this -- mode the exact order of lines may not be preserved, just different -- Running *.exp chunks should be in correct order. --''') -- sys.exit (1) -- -- def fatal (self, what, string): -- if not what: -- what = sys.argv[0] -- sys.stderr.write (what + ': ' + string + '\n') -- sys.exit (1) -- -- # Parse the command-line arguments. -- def parse_cmdline (self): -- try: -- (options, self.files) = getopt.getopt (sys.argv[1:], 'l:t:L') -- if len (self.files) == 0: -- self.usage() -- for (option, value) in options: -- if option == '-l': -- self.variations.append (value) -- elif option == '-t': -- self.tools.append (value) -- else: -- self.do_sum = False -- except getopt.GetoptError as e: -- self.fatal (None, e.msg) -- -- # Try to parse time string TIME, returning an arbitrary time on failure. -- # Getting this right is just a nice-to-have so failures should be silent. -- def parse_time (self, time): -- try: -- return datetime.strptime (time, '%c') -- except ValueError: -- return datetime.now() -- -- # Parse an integer and abort on failure. -- def parse_int (self, filename, value): -- try: -- return int (value) -- except ValueError: -- self.fatal (filename, 'expected an integer, got: ' + value) -- -- # Return a list that represents no test results. -- def zero_counts (self): -- return [0 for x in self.count_names] -- -- # Return the ToolRun for tool NAME. -- def get_tool (self, name): -- if name not in self.runs: -- self.runs[name] = ToolRun (name) -- return self.runs[name] -- -- # Add the result counts in list FROMC to TOC. -- def accumulate_counts (self, toc, fromc): -- for i in range (len (self.count_names)): -- toc[i] += fromc[i] -- -- # Parse the list of variations after 'Schedule of variations:'. -- # Return the number seen. -- def parse_variations (self, filename, file): -- num_variations = 0 -- while True: -- line = file.readline() -- if line == '': -- self.fatal (filename, 'could not parse variation list') -- if line == '\n': -- break -- self.known_variations.add (line.strip()) -- num_variations += 1 -- return num_variations -- -- # Parse from the first line after 'Running target ...' to the end -- # of the run's summary. -- def parse_run (self, filename, file, tool, variation, num_variations): -- header = None -- harness = None -- segment = None -- final_using = 0 -- -- # If this is the first run for this variation, add any text before -- # the first harness to the header. -- if not variation.header: -- segment = Segment (filename, file.tell()) -- variation.header = segment -- -- # Parse up until the first line of the summary. -- if num_variations == 1: -- end = '\t\t=== ' + tool.name + ' Summary ===\n' -- else: -- end = ('\t\t=== ' + tool.name + ' Summary for ' -- + variation.name + ' ===\n') -- while True: -- line = file.readline() -- if line == '': -- self.fatal (filename, 'no recognised summary line') -- if line == end: -- break -- -- # Look for the start of a new harness. -- if line.startswith ('Running ') and line.endswith (' ...\n'): -- # Close off the current harness segment, if any. -- if harness: -- segment.lines -= final_using -- harness.add_segment (first_key, segment) -- name = line[len ('Running '):-len(' ...\n')] -- harness = variation.get_harness (name) -- segment = Segment (filename, file.tell()) -- first_key = None -- final_using = 0 -- continue -- -- # Record test results. Associate the first test result with -- # the harness segment, so that if a run for a particular harness -- # has been split up, we can reassemble the individual segments -- # in a sensible order. -- # -- # dejagnu sometimes issues warnings about the testing environment -- # before running any tests. Treat them as part of the header -- # rather than as a test result. -- match = self.result_re.match (line) -- if match and (harness or not line.startswith ('WARNING:')): -- if not harness: -- self.fatal (filename, 'saw test result before harness name') -- name = match.group (2) -- # Ugly hack to get the right order for gfortran. -- if name.startswith ('gfortran.dg/g77/'): -- name = 'h' + name -- key = (name, len (harness.results)) -- harness.results.append ((key, line)) -- if not first_key and sort_logs: -- first_key = key -- -- # 'Using ...' lines are only interesting in a header. Splitting -- # the test up into parallel runs leads to more 'Using ...' lines -- # than there would be in a single log. -- if line.startswith ('Using '): -- final_using += 1 -- else: -- final_using = 0 -- -- # Add other text to the current segment, if any. -- if segment: -- segment.lines += 1 -- -- # Close off the final harness segment, if any. -- if harness: -- segment.lines -= final_using -- harness.add_segment (first_key, segment) -- -- # Parse the rest of the summary (the '# of ' lines). -- if len (variation.counts) == 0: -- variation.counts = self.zero_counts() -- while True: -- before = file.tell() -- line = file.readline() -- if line == '': -- break -- if line == '\n': -- continue -- if not line.startswith ('# '): -- file.seek (before) -- break -- found = False -- for i in range (len (self.count_names)): -- if line.startswith (self.count_names[i]): -- count = line[len (self.count_names[i]):-1].strip() -- variation.counts[i] += self.parse_int (filename, count) -- found = True -- break -- if not found: -- self.fatal (filename, 'unknown test result: ' + line[:-1]) -- -- # Parse an acats run, which uses a different format from dejagnu. -- # We have just skipped over '=== acats configuration ==='. -- def parse_acats_run (self, filename, file): -- # Parse the preamble, which describes the configuration and logs -- # the creation of support files. -- record = (self.acats_premable == '') -- if record: -- self.acats_premable = '\t\t=== acats configuration ===\n' -- while True: -- line = file.readline() -- if line == '': -- self.fatal (filename, 'could not parse acats preamble') -- if line == '\t\t=== acats tests ===\n': -- break -- if record: -- self.acats_premable += line -- -- # Parse the test results themselves, using a dummy variation name. -- tool = self.get_tool ('acats') -- variation = tool.get_variation ('none') -- self.parse_run (filename, file, tool, variation, 1) -- -- # Parse the failure list. -- while True: -- before = file.tell() -- line = file.readline() -- if line.startswith ('*** FAILURES: '): -- self.acats_failures.append (line[len ('*** FAILURES: '):-1]) -- continue -- file.seek (before) -- break -- -- # Parse the final summary at the end of a log in order to capture -- # the version output that follows it. -- def parse_final_summary (self, filename, file): -- record = (self.version_output == '') -- while True: -- line = file.readline() -- if line == '': -- break -- if line.startswith ('# of '): -- continue -- if record: -- self.version_output += line -- if line == '\n': -- break -- -- # Parse a .log or .sum file. -- def parse_file (self, filename, file): -- tool = None -- target = None -- num_variations = 1 -- while True: -- line = file.readline() -- if line == '': -- return -- -- # Parse the list of variations, which comes before the test -- # runs themselves. -- if line.startswith ('Schedule of variations:'): -- num_variations = self.parse_variations (filename, file) -- continue -- -- # Parse a testsuite run for one tool/variation combination. -- if line.startswith ('Running target '): -- name = line[len ('Running target '):-1] -- if not tool: -- self.fatal (filename, 'could not parse tool name') -- if name not in self.known_variations: -- self.fatal (filename, 'unknown target: ' + name) -- self.parse_run (filename, file, tool, -- tool.get_variation (name), -- num_variations) -- # If there is only one variation then there is no separate -- # summary for it. Record any following version output. -- if num_variations == 1: -- self.parse_final_summary (filename, file) -- continue -- -- # Parse the start line. In the case where several files are being -- # parsed, pick the one with the earliest time. -- match = self.test_run_re.match (line) -- if match: -- time = self.parse_time (match.group (2)) -- if not self.start_line or self.start_line[0] > time: -- self.start_line = (time, line) -- continue -- -- # Parse the form used for native testing. -- if line.startswith ('Native configuration is '): -- self.native_line = line -- continue -- -- # Parse the target triplet. -- if line.startswith ('Target is '): -- self.target_line = line -- continue -- -- # Parse the host triplet. -- if line.startswith ('Host is '): -- self.host_line = line -- continue -- -- # Parse the acats premable. -- if line == '\t\t=== acats configuration ===\n': -- self.parse_acats_run (filename, file) -- continue -- -- # Parse the tool name. -- match = self.tool_re.match (line) -- if match: -- tool = self.get_tool (match.group (1)) -- continue -- -- # Skip over the final summary (which we instead create from -- # individual runs) and parse the version output. -- if tool and line == '\t\t=== ' + tool.name + ' Summary ===\n': -- if file.readline() != '\n': -- self.fatal (filename, 'expected blank line after summary') -- self.parse_final_summary (filename, file) -- continue -- -- # Parse the completion line. In the case where several files -- # are being parsed, pick the one with the latest time. -- match = self.completed_re.match (line) -- if match: -- time = self.parse_time (match.group (1)) -- if not self.end_line or self.end_line[0] < time: -- self.end_line = (time, line) -- continue -- -- # Sanity check to make sure that important text doesn't get -- # dropped accidentally. -- if strict and line.strip() != '': -- self.fatal (filename, 'unrecognised line: ' + line[:-1]) -- -- # Output a segment of text. -- def output_segment (self, segment): -- with safe_open (segment.filename) as file: -- file.seek (segment.start) -- for i in range (segment.lines): -- sys.stdout.write (file.readline()) -- -- # Output a summary giving the number of times each type of result has -- # been seen. -- def output_summary (self, tool, counts): -- for i in range (len (self.count_names)): -- name = self.count_names[i] -- # dejagnu only prints result types that were seen at least once, -- # but acats always prints a number of unexpected failures. -- if (counts[i] > 0 -- or (tool.name == 'acats' -- and name.startswith ('# of unexpected failures'))): -- sys.stdout.write ('%s%d\n' % (name, counts[i])) -- -- # Output unified .log or .sum information for a particular variation, -- # with a summary at the end. -- def output_variation (self, tool, variation): -- self.output_segment (variation.header) -- for harness in sorted (variation.harnesses.values(), -- key = attrgetter ('name')): -- sys.stdout.write ('Running ' + harness.name + ' ...\n') -- if self.do_sum: -- harness.results.sort() -- for (key, line) in harness.results: -- sys.stdout.write (line) -- else: -- # Rearrange the log segments into test order (but without -- # rearranging text within those segments). -- for key in sorted (harness.segments.keys()): -- self.output_segment (harness.segments[key]) -- for segment in harness.empty: -- self.output_segment (segment) -- if len (self.variations) > 1: -- sys.stdout.write ('\t\t=== ' + tool.name + ' Summary for ' -- + variation.name + ' ===\n\n') -- self.output_summary (tool, variation.counts) -- -- # Output unified .log or .sum information for a particular tool, -- # with a summary at the end. -- def output_tool (self, tool): -- counts = self.zero_counts() -- if tool.name == 'acats': -- # acats doesn't use variations, so just output everything. -- # It also has a different approach to whitespace. -- sys.stdout.write ('\t\t=== ' + tool.name + ' tests ===\n') -- for variation in tool.variations.values(): -- self.output_variation (tool, variation) -- self.accumulate_counts (counts, variation.counts) -- sys.stdout.write ('\t\t=== ' + tool.name + ' Summary ===\n') -- else: -- # Output the results in the usual dejagnu runtest format. -- sys.stdout.write ('\n\t\t=== ' + tool.name + ' tests ===\n\n' -- 'Schedule of variations:\n') -- for name in self.variations: -- if name in tool.variations: -- sys.stdout.write (' ' + name + '\n') -- sys.stdout.write ('\n') -- for name in self.variations: -- if name in tool.variations: -- variation = tool.variations[name] -- sys.stdout.write ('Running target ' -- + variation.name + '\n') -- self.output_variation (tool, variation) -- self.accumulate_counts (counts, variation.counts) -- sys.stdout.write ('\n\t\t=== ' + tool.name + ' Summary ===\n\n') -- self.output_summary (tool, counts) -- -- def main (self): -- self.parse_cmdline() -- try: -- # Parse the input files. -- for filename in self.files: -- with safe_open (filename) as file: -- self.parse_file (filename, file) -- -- # Decide what to output. -- if len (self.variations) == 0: -- self.variations = sorted (self.known_variations) -- else: -- for name in self.variations: -- if name not in self.known_variations: -- self.fatal (None, 'no results for ' + name) -- if len (self.tools) == 0: -- self.tools = sorted (self.runs.keys()) -- -- # Output the header. -- if self.start_line: -- sys.stdout.write (self.start_line[1]) -- sys.stdout.write (self.native_line) -- sys.stdout.write (self.target_line) -- sys.stdout.write (self.host_line) -- sys.stdout.write (self.acats_premable) -- -- # Output the main body. -- for name in self.tools: -- if name not in self.runs: -- self.fatal (None, 'no results for ' + name) -- self.output_tool (self.runs[name]) -- -- # Output the footer. -- if len (self.acats_failures) > 0: -- sys.stdout.write ('*** FAILURES: ' -- + ' '.join (self.acats_failures) + '\n') -- sys.stdout.write (self.version_output) -- if self.end_line: -- sys.stdout.write (self.end_line[1]) -- except IOError as e: -- self.fatal (e.filename, e.strerror) -- --Prog().main() diff --git a/gdb-pahole-python2.patch b/gdb-pahole-python2.patch new file mode 100644 index 0000000..b3722b1 --- /dev/null +++ b/gdb-pahole-python2.patch @@ -0,0 +1,36 @@ +diff --git a/gdb/python/lib/gdb/command/pahole.py b/gdb/python/lib/gdb/command/pahole.py +index e08eaf5..56c1737 100644 +--- a/gdb/python/lib/gdb/command/pahole.py ++++ b/gdb/python/lib/gdb/command/pahole.py +@@ -55,19 +55,19 @@ It prints the type and displays comments showing where holes are.""" + fieldsize = 8 * ftype.sizeof + + # TARGET_CHAR_BIT +- print (' /* %3d %3d */' % (int (bitpos / 8), int (fieldsize / 8)), end = "") ++ print (' /* %3d %3d */' % (int (bitpos / 8), int (fieldsize / 8))), + bitpos = bitpos + fieldsize + + if ftype.code == gdb.TYPE_CODE_STRUCT: + self.pahole (ftype, level + 1, field.name) + else: +- print (' ' * (2 + 2 * level), end = "") ++ print (' ' * (2 + 2 * level)), + print ('%s %s' % (str (ftype), field.name)) + + if level == 0: + self.maybe_print_hole(bitpos, 8 * type.sizeof) + +- print (' ' * (14 + 2 * level), end = "") ++ print (' ' * (14 + 2 * level)), + print ('} %s' % name) + + def invoke (self, arg, from_tty): +@@ -75,7 +75,7 @@ It prints the type and displays comments showing where holes are.""" + type = type.strip_typedefs () + if type.code != gdb.TYPE_CODE_STRUCT: + raise (TypeError, '%s is not a struct type' % arg) +- print (' ' * 14, end = "") ++ print (' ' * 14), + self.pahole (type, 0, '') + + Pahole() diff --git a/gdb-probes-based-interface-robust-1of2.patch b/gdb-probes-based-interface-robust-1of2.patch new file mode 100644 index 0000000..8f38f88 --- /dev/null +++ b/gdb-probes-based-interface-robust-1of2.patch @@ -0,0 +1,193 @@ +From f469e8ce11672e26feb5ba6f9a134275fcfd5b4f Mon Sep 17 00:00:00 2001 +From: Sergio Durigan Junior +Date: Fri, 21 Aug 2015 18:13:46 -0400 +Subject: [PATCH 1/4] Improve error reporting when handling SystemTap SDT + probes + +This patch improves the error reporting when handling SystemTap SDT +probes. "Handling", in this case, mostly means "parsing". + +On gdb/probe.h, only trivial changes on functions' comments in order +to explicitly mention that some of them can throw exceptions. This is +just to make the API a bit more clear. + +On gdb/stap-probe.c, I have s/internal_error/error/ on two functions +that are responsible for parsing specific bits of the probes' +arguments: stap_get_opcode and stap_get_expected_argument_type. It is +not correct to call internal_error on such situations because it is +not really GDB's fault if the probes have malformed arguments. I also +improved the error reported on stap_get_expected_argument_type by also +including the probe name on it. + +Aside from that, and perhaps most importantly, I added a check on +stap_get_arg to make sure that we don't try to extract an argument +from a probe that has no arguments. This check issues an +internal_error, because it really means that GDB is doing something it +shouldn't. + +Although it can be considered almost trivial, and despite the fact +that I am the maintainer for this part of the code, I am posting this +patch for review. I will wait a few days, and if nobody has anything +to say, I will go ahead and push it. + +gdb/ChangeLog: +2015-09-01 Sergio Durigan Junior + + * probe.h (struct probe_ops) : Mention in + the comment that the function can throw an exception. + (get_probe_argument_count): Likewise. + (evaluate_probe_argument): Likewise. + * stap-probe.c (stap_get_opcode): Call error instead of + internal_error. + (stap_get_expected_argument_type): Likewise. Add argument + 'probe'. Improve error message by mentioning the probe's name. + (stap_parse_probe_arguments): Adjust call to + stap_get_expected_argument_type. + (stap_get_arg): Add comment. Assert that 'probe->args_parsed' is + not zero. Call internal_error if GDB requests an argument but the + probe has no arguments. +--- + gdb/ChangeLog | 17 +++++++++++++++++ + gdb/probe.h | 20 ++++++++++++++------ + gdb/stap-probe.c | 29 ++++++++++++++++++++++------- + 3 files changed, 53 insertions(+), 13 deletions(-) + +Index: gdb-7.10/gdb/probe.h +=================================================================== +--- gdb-7.10.orig/gdb/probe.h ++++ gdb-7.10/gdb/probe.h +@@ -70,7 +70,8 @@ struct probe_ops + CORE_ADDR (*get_probe_address) (struct probe *probe, + struct objfile *objfile); + +- /* Return the number of arguments of PROBE. */ ++ /* Return the number of arguments of PROBE. This function can ++ throw an exception. */ + + unsigned (*get_probe_argument_count) (struct probe *probe, + struct frame_info *frame); +@@ -82,7 +83,8 @@ struct probe_ops + int (*can_evaluate_probe_arguments) (struct probe *probe); + + /* Evaluate the Nth argument from the PROBE, returning a value +- corresponding to it. The argument number is represented N. */ ++ corresponding to it. The argument number is represented N. ++ This function can throw an exception. */ + + struct value *(*evaluate_probe_argument) (struct probe *probe, + unsigned n, +@@ -141,13 +143,15 @@ struct probe_ops + + /* Enable a probe. The semantics of "enabling" a probe depend on + the specific backend and the field can be NULL in case enabling +- probes is not supported. */ ++ probes is not supported. This function can throw an ++ exception. */ + + void (*enable_probe) (struct probe *probe); + + /* Disable a probe. The semantics of "disabling" a probe depend + on the specific backend and the field can be NULL in case +- disabling probes is not supported. */ ++ disabling probes is not supported. This function can throw an ++ exception. */ + + void (*disable_probe) (struct probe *probe); + }; +@@ -264,7 +268,9 @@ extern struct cmd_list_element **info_pr + extern CORE_ADDR get_probe_address (struct probe *probe, + struct objfile *objfile); + +-/* Return the argument count of the specified probe. */ ++/* Return the argument count of the specified probe. ++ ++ This function can throw an exception. */ + + extern unsigned get_probe_argument_count (struct probe *probe, + struct frame_info *frame); +@@ -276,7 +282,9 @@ extern unsigned get_probe_argument_count + extern int can_evaluate_probe_arguments (struct probe *probe); + + /* Evaluate argument N of the specified probe. N must be between 0 +- inclusive and get_probe_argument_count exclusive. */ ++ inclusive and get_probe_argument_count exclusive. ++ ++ This function can throw an exception. */ + + extern struct value *evaluate_probe_argument (struct probe *probe, + unsigned n, +Index: gdb-7.10/gdb/stap-probe.c +=================================================================== +--- gdb-7.10.orig/gdb/stap-probe.c ++++ gdb-7.10/gdb/stap-probe.c +@@ -313,9 +313,8 @@ stap_get_opcode (const char **s) + break; + + default: +- internal_error (__FILE__, __LINE__, +- _("Invalid opcode in expression `%s' for SystemTap" +- "probe"), *s); ++ error (_("Invalid opcode in expression `%s' for SystemTap" ++ "probe"), *s); + } + + return op; +@@ -326,7 +325,8 @@ stap_get_opcode (const char **s) + + static struct type * + stap_get_expected_argument_type (struct gdbarch *gdbarch, +- enum stap_arg_bitness b) ++ enum stap_arg_bitness b, ++ const struct stap_probe *probe) + { + switch (b) + { +@@ -361,8 +361,8 @@ stap_get_expected_argument_type (struct + return builtin_type (gdbarch)->builtin_uint64; + + default: +- internal_error (__FILE__, __LINE__, +- _("Undefined bitness for probe.")); ++ error (_("Undefined bitness for probe '%s'."), ++ probe->p.name); + break; + } + } +@@ -1172,7 +1172,8 @@ stap_parse_probe_arguments (struct stap_ + else + arg.bitness = STAP_ARG_BITNESS_UNDEFINED; + +- arg.atype = stap_get_expected_argument_type (gdbarch, arg.bitness); ++ arg.atype = stap_get_expected_argument_type (gdbarch, arg.bitness, ++ probe); + + expr = stap_parse_argument (&cur, arg.atype, gdbarch); + +@@ -1278,12 +1279,26 @@ stap_is_operator (const char *op) + return ret; + } + ++/* Return argument N of probe PROBE. ++ ++ If the probe's arguments have not been parsed yet, parse them. If ++ there are no arguments, throw an exception (error). Otherwise, ++ return the requested argument. */ ++ + static struct stap_probe_arg * + stap_get_arg (struct stap_probe *probe, unsigned n, struct gdbarch *gdbarch) + { + if (!probe->args_parsed) + stap_parse_probe_arguments (probe, gdbarch); + ++ gdb_assert (probe->args_parsed); ++ if (probe->args_u.vec == NULL) ++ internal_error (__FILE__, __LINE__, ++ _("Probe '%s' apparently does not have arguments, but \n" ++ "GDB is requesting its argument number %u anyway. " ++ "This should not happen. Please report this bug."), ++ probe->p.name, n); ++ + return VEC_index (stap_probe_arg_s, probe->args_u.vec, n); + } + diff --git a/gdb-probes-based-interface-robust-2of2.patch b/gdb-probes-based-interface-robust-2of2.patch new file mode 100644 index 0000000..4fa3563 --- /dev/null +++ b/gdb-probes-based-interface-robust-2of2.patch @@ -0,0 +1,194 @@ +From 3bd7e5b7ee5ea0b3bbb4030ca841f66faad74f0f Mon Sep 17 00:00:00 2001 +From: Sergio Durigan Junior +Date: Fri, 21 Aug 2015 18:28:07 -0400 +Subject: [PATCH 2/4] Catching errors on probes-based dynamic linker interface + +This patch is intended to make the interaction between the +probes-based dynamic linker interface and the SystemTap SDT probe code +on GDB more robust. It does that by wrapping the calls to the probe +API with TRY...CATCH'es, so that any exception thrown will be caught +and handled properly. + +The idea for this patch came from +, which is a bug +initially filed against Fedora GDB (but now under Fedora GLIBC). This +bug happens on armhfp (although it could happen on other targets as +well), and is triggered because GCC generates a strange argument for +one of the probes used by GDB in the dynamic linker interface. As can +be seen in the bug, this argument is "-4@.L1052". + +I don't want to discuss the reasons for this argument to be there +(this discussion belongs to the bug, or to another thread), but GDB +could definitely do a better error handling here. Currently, one sees +the following message when there is an error in the probes-based +dynamic linker interface: + + (gdb) run + Starting program: /bin/inferior + warning: Probes-based dynamic linker interface failed. + Reverting to original interface. + + Cannot parse expression `.L976 4@r4'. + (gdb) + +Which means that one needs to explicitly issue a "continue" command to +make GDB continue running the inferior, even though this error is not +fatal and GDB will fallback to the old interface automatically. + +This is where this patch helps: it makes GDB still print the necessary +warnings or error messages, but it *also* does not stop the inferior +unnecessarily. + +I have tested this patch on the systems where this error happens, but +I could not come up with a way to create a testcase for it. +Nevertheless, it should be straightforward to see that this patch does +improve the current situation. + +gdb/ChangeLog: +2015-09-01 Sergio Durigan Junior + + * solib-svr4.c (solib_event_probe_action): Call + get_probe_argument_count using TRY...CATCH. + (svr4_handle_solib_event): Likewise, for evaluate_probe_argument. +--- + gdb/ChangeLog | 6 ++++++ + gdb/solib-svr4.c | 43 ++++++++++++++++++++++++++++++++++++++++--- + 2 files changed, 46 insertions(+), 3 deletions(-) + +Index: gdb-7.10/gdb/solib-svr4.c +=================================================================== +--- gdb-7.10.orig/gdb/solib-svr4.c ++++ gdb-7.10/gdb/solib-svr4.c +@@ -1796,7 +1796,23 @@ solib_event_probe_action (struct probe_a + arg0: Lmid_t lmid (mandatory) + arg1: struct r_debug *debug_base (mandatory) + arg2: struct link_map *new (optional, for incremental updates) */ +- probe_argc = get_probe_argument_count (pa->probe, frame); ++ TRY ++ { ++ probe_argc = get_probe_argument_count (pa->probe, frame); ++ } ++ CATCH (ex, RETURN_MASK_ERROR) ++ { ++ exception_print (gdb_stderr, ex); ++ probe_argc = 0; ++ } ++ END_CATCH ++ ++ /* If get_probe_argument_count throws an exception, probe_argc will ++ be set to zero. However, if pa->probe does not have arguments, ++ then get_probe_argument_count will succeed but probe_argc will ++ also be zero. Both cases happen because of different things, but ++ they are treated equally here: action will be set to ++ PROBES_INTERFACE_FAILED. */ + if (probe_argc == 2) + action = FULL_RELOAD; + else if (probe_argc < 2) +@@ -1950,7 +1966,17 @@ svr4_handle_solib_event (void) + usm_chain = make_cleanup (resume_section_map_updates_cleanup, + current_program_space); + +- val = evaluate_probe_argument (pa->probe, 1, frame); ++ TRY ++ { ++ val = evaluate_probe_argument (pa->probe, 1, frame); ++ } ++ CATCH (ex, RETURN_MASK_ERROR) ++ { ++ exception_print (gdb_stderr, ex); ++ val = NULL; ++ } ++ END_CATCH ++ + if (val == NULL) + { + do_cleanups (old_chain); +@@ -1981,7 +2007,18 @@ svr4_handle_solib_event (void) + + if (action == UPDATE_OR_RELOAD) + { +- val = evaluate_probe_argument (pa->probe, 2, frame); ++ TRY ++ { ++ val = evaluate_probe_argument (pa->probe, 2, frame); ++ } ++ CATCH (ex, RETURN_MASK_ERROR) ++ { ++ exception_print (gdb_stderr, ex); ++ do_cleanups (old_chain); ++ return; ++ } ++ END_CATCH ++ + if (val != NULL) + lm = value_as_address (val); + +From ad1c917a79e8c5aa67657f148415c1bee01b240f Mon Sep 17 00:00:00 2001 +From: Sergio Durigan Junior +Date: Wed, 2 Sep 2015 00:34:22 -0400 +Subject: [PATCH 3/4] Initialize variable and silence GCC warning from last + commit + +BuildBot e-mailed me to let me know that my last commit broke GDB on +RHEL-7.1 s390x. On solib-svr4.c:svr4_handle_solib_event, 'val' now +needs to be initialized as NULL because it is inside a TRY..CATCH +block. This patch does that. Pushed as obvious. + +gdb/ChangeLog: +2015-09-01 Sergio Durigan Junior + + * solib-svr4.c (svr4_handle_solib_event): Initialize 'val' as NULL +--- + gdb/ChangeLog | 4 ++++ + gdb/solib-svr4.c | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +Index: gdb-7.10/gdb/solib-svr4.c +=================================================================== +--- gdb-7.10.orig/gdb/solib-svr4.c ++++ gdb-7.10/gdb/solib-svr4.c +@@ -1918,7 +1918,7 @@ svr4_handle_solib_event (void) + struct probe_and_action *pa; + enum probe_action action; + struct cleanup *old_chain, *usm_chain; +- struct value *val; ++ struct value *val = NULL; + CORE_ADDR pc, debug_base, lm = 0; + int is_initial_ns; + struct frame_info *frame = get_current_frame (); +From 73c6b4756a7cee53c274ed05fddcd079b8b7e57c Mon Sep 17 00:00:00 2001 +From: Sergio Durigan Junior +Date: Wed, 2 Sep 2015 00:46:43 -0400 +Subject: [PATCH 4/4] Initialize yet another variable to silence GCC warning + from last-but-one commit + +Yet another BuildBot e-mail, yet another breakage on RHEL-7.1 s390x +(which uses an older GCC). This time, +solib-svr4.c:solib_event_probe_action has the probe_argc variable, +which is now inside a TRY..CATCH and therefore needs to be +initialized. Pushed as obvious. + +gdb/ChangeLog: +2015-09-01 Sergio Durigan Junior + + * solib-svr4.c (solib_event_probe_action): Initialize 'probe_argc' + as zero. +--- + gdb/ChangeLog | 5 +++++ + gdb/solib-svr4.c | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + + 2015-09-01 Sergio Durigan Junior +Index: gdb-7.10/gdb/solib-svr4.c +=================================================================== +--- gdb-7.10.orig/gdb/solib-svr4.c ++++ gdb-7.10/gdb/solib-svr4.c +@@ -1782,7 +1782,7 @@ static enum probe_action + solib_event_probe_action (struct probe_and_action *pa) + { + enum probe_action action; +- unsigned probe_argc; ++ unsigned probe_argc = 0; + struct frame_info *frame = get_current_frame (); + + action = pa->action; diff --git a/gdb-python-gil.patch b/gdb-python-gil.patch index ad0436a..6d8dcf5 100644 --- a/gdb-python-gil.patch +++ b/gdb-python-gil.patch @@ -1,7 +1,8 @@ -diff -dup -ruNp gdb-7.8-orig/gdb/doc/python.texi gdb-7.8/gdb/doc/python.texi ---- gdb-7.8-orig/gdb/doc/python.texi 2014-08-13 22:04:14.162441271 +0200 -+++ gdb-7.8/gdb/doc/python.texi 2014-08-13 22:07:20.894643853 +0200 -@@ -228,6 +228,14 @@ returned as a string. The default is @c +Index: gdb-7.9.50.20150520/gdb/doc/python.texi +=================================================================== +--- gdb-7.9.50.20150520.orig/gdb/doc/python.texi 2015-05-31 17:57:12.431593983 +0200 ++++ gdb-7.9.50.20150520/gdb/doc/python.texi 2015-05-31 17:57:14.654607708 +0200 +@@ -229,6 +229,14 @@ returned as a string. The default is @c return value is @code{None}. If @var{to_string} is @code{True}, the @value{GDBN} virtual terminal will be temporarily set to unlimited width and height, and its pagination will be disabled; @pxref{Screen Size}. @@ -16,10 +17,11 @@ diff -dup -ruNp gdb-7.8-orig/gdb/doc/python.texi gdb-7.8/gdb/doc/python.texi @end defun @findex gdb.breakpoints -diff -dup -ruNp gdb-7.8-orig/gdb/python/python-internal.h gdb-7.8/gdb/python/python-internal.h ---- gdb-7.8-orig/gdb/python/python-internal.h 2014-08-13 22:04:14.835441977 +0200 -+++ gdb-7.8/gdb/python/python-internal.h 2014-08-13 22:07:20.895643867 +0200 -@@ -143,6 +143,8 @@ typedef int Py_ssize_t; +Index: gdb-7.9.50.20150520/gdb/python/python-internal.h +=================================================================== +--- gdb-7.9.50.20150520.orig/gdb/python/python-internal.h 2015-05-31 17:57:12.432593989 +0200 ++++ gdb-7.9.50.20150520/gdb/python/python-internal.h 2015-05-31 17:57:14.654607708 +0200 +@@ -142,6 +142,8 @@ typedef int Py_ssize_t; #define PyGILState_Release(ARG) ((void)(ARG)) #define PyEval_InitThreads() #define PyThreadState_Swap(ARG) ((void)(ARG)) @@ -28,18 +30,18 @@ diff -dup -ruNp gdb-7.8-orig/gdb/python/python-internal.h gdb-7.8/gdb/python/pyt #define PyEval_ReleaseLock() #endif -diff -dup -ruNp gdb-7.8-orig/gdb/python/python.c gdb-7.8/gdb/python/python.c ---- gdb-7.8-orig/gdb/python/python.c 2014-08-13 22:04:14.164441273 +0200 -+++ gdb-7.8/gdb/python/python.c 2014-08-13 22:07:20.895643867 +0200 -@@ -620,14 +620,19 @@ execute_gdb_command (PyObject *self, PyO +Index: gdb-7.9.50.20150520/gdb/python/python.c +=================================================================== +--- gdb-7.9.50.20150520.orig/gdb/python/python.c 2015-05-31 17:57:14.656607720 +0200 ++++ gdb-7.9.50.20150520/gdb/python/python.c 2015-05-31 18:02:08.891424227 +0200 +@@ -627,13 +627,18 @@ execute_gdb_command (PyObject *self, PyO { const char *arg; PyObject *from_tty_obj = NULL, *to_string_obj = NULL; - int from_tty, to_string; +- static char *keywords[] = {"command", "from_tty", "to_string", NULL }; + PyObject *release_gil_obj = NULL; + int from_tty, to_string, release_gil; - volatile struct gdb_exception except; -- static char *keywords[] = {"command", "from_tty", "to_string", NULL }; + static char *keywords[] = {"command", "from_tty", "to_string", + "release_gil", NULL }; char *result = NULL; @@ -55,7 +57,7 @@ diff -dup -ruNp gdb-7.8-orig/gdb/python/python.c gdb-7.8/gdb/python/python.c return NULL; from_tty = 0; -@@ -648,12 +652,28 @@ execute_gdb_command (PyObject *self, PyO +@@ -654,12 +659,28 @@ execute_gdb_command (PyObject *self, PyO to_string = cmp; } @@ -68,7 +70,7 @@ diff -dup -ruNp gdb-7.8-orig/gdb/python/python.c gdb-7.8/gdb/python/python.c + release_gil = cmp; + } + - TRY_CATCH (except, RETURN_MASK_ALL) + TRY { /* Copy the argument text in case the command modifies it. */ char *copy = xstrdup (arg); @@ -84,7 +86,7 @@ diff -dup -ruNp gdb-7.8-orig/gdb/python/python.c gdb-7.8/gdb/python/python.c make_cleanup_restore_integer (&interpreter_async); interpreter_async = 0; -@@ -666,9 +686,21 @@ execute_gdb_command (PyObject *self, PyO +@@ -672,11 +693,23 @@ execute_gdb_command (PyObject *self, PyO execute_command (copy, from_tty); } @@ -94,22 +96,25 @@ diff -dup -ruNp gdb-7.8-orig/gdb/python/python.c gdb-7.8/gdb/python/python.c + do_cleanups (cleanup); } -- GDB_PY_HANDLE_EXCEPTION (except); -+ if (except.reason < 0) -+ { -+ /* Reacquire the GIL if it was released earlier. */ -+ if (release_gil) -+ PyEval_RestoreThread (state); + CATCH (except, RETURN_MASK_ALL) + { +- GDB_PY_HANDLE_EXCEPTION (except); ++ if (except.reason < 0) ++ { ++ /* Reacquire the GIL if it was released earlier. */ ++ if (release_gil) ++ PyEval_RestoreThread (state); + -+ gdbpy_convert_exception (except); -+ return NULL; -+ } ++ gdbpy_convert_exception (except); ++ return NULL; ++ } + } + END_CATCH - /* Do any commands attached to breakpoint we stopped at. */ - bpstat_do_actions (); -diff -dup -ruNp gdb-7.8-orig/gdb/testsuite/gdb.python/py-gil-mthread.c gdb-7.8/gdb/testsuite/gdb.python/py-gil-mthread.c ---- gdb-7.8-orig/gdb/testsuite/gdb.python/py-gil-mthread.c 1970-01-01 01:00:00.000000000 +0100 -+++ gdb-7.8/gdb/testsuite/gdb.python/py-gil-mthread.c 2014-08-13 22:33:05.052648912 +0200 +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.c 2015-05-31 17:57:14.656607720 +0200 @@ -0,0 +1,12 @@ +#include + @@ -123,9 +128,10 @@ diff -dup -ruNp gdb-7.8-orig/gdb/testsuite/gdb.python/py-gil-mthread.c gdb-7.8/g + printf ("Sleeping %d\n", i); + } +} -diff -dup -ruNp gdb-7.8-orig/gdb/testsuite/gdb.python/py-gil-mthread.exp gdb-7.8/gdb/testsuite/gdb.python/py-gil-mthread.exp ---- gdb-7.8-orig/gdb/testsuite/gdb.python/py-gil-mthread.exp 1970-01-01 01:00:00.000000000 +0100 -+++ gdb-7.8/gdb/testsuite/gdb.python/py-gil-mthread.exp 2014-08-13 22:33:00.660641300 +0200 +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.exp +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.exp 2015-05-31 17:57:14.657607726 +0200 @@ -0,0 +1,69 @@ +# Copyright (C) 2014 Free Software Foundation, Inc. + @@ -196,9 +202,10 @@ diff -dup -ruNp gdb-7.8-orig/gdb/testsuite/gdb.python/py-gil-mthread.exp gdb-7.8 + } + } +} -diff -dup -ruNp gdb-7.8-orig/gdb/testsuite/gdb.python/py-gil-mthread.py gdb-7.8/gdb/testsuite/gdb.python/py-gil-mthread.py ---- gdb-7.8-orig/gdb/testsuite/gdb.python/py-gil-mthread.py 1970-01-01 01:00:00.000000000 +0100 -+++ gdb-7.8/gdb/testsuite/gdb.python/py-gil-mthread.py 2014-08-13 22:33:08.996654320 +0200 +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.py +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.python/py-gil-mthread.py 2015-05-31 17:57:14.657607726 +0200 @@ -0,0 +1,22 @@ +import thread +import time diff --git a/gdb-python3-py_hash_t-32bit.patch b/gdb-python3-py_hash_t-32bit.patch deleted file mode 100644 index cde6650..0000000 --- a/gdb-python3-py_hash_t-32bit.patch +++ /dev/null @@ -1,175 +0,0 @@ -http://sourceware.org/ml/gdb-patches/2015-02/msg00091.html -Subject: [patch] Fix Python 3 build error on 32-bit hosts - - ---ZPt4rx8FFjLCG7dd -Content-Type: text/plain; charset=iso-2022-jp -Content-Disposition: inline - -Hi, - -on Fedora Rawhide (==22) i686 using --with-python=/usr/bin/python3 one gets: - -gcc -g -I. -I. -I./common -I./config -DLOCALEDIR="\"/usr/local/share/locale\"" -DHAVE_CONFIG_H -I./../include/opcode -I./../opcodes/.. -I./../readline/.. -I../bfd -I./../bfd -I./../include -I../libdecnumber -I./../libdecnumber -I./gnulib/import -Ibuild-gnulib/import -DTUI=1 -pthread -I/usr/include/guile/2.0 -I/usr/include/python3.4m -I/usr/include/python3.4m -Wall -Wdeclaration-after-statement -Wpointer-arith -Wpointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -Wmissing-prototypes -Wdeclaration-after-statement -Wempty-body -Wmissing-parameter-type -Wold-style-declaration -Wold-style-definition -Wformat-nonliteral -Werror -c -o py-value.o -MT py-value.o -MMD -MP -MF .deps/py-value.Tpo -fno-strict-aliasing -DNDEBUG -fwrapv ./python/py-value.c -./python/py-value.c:1696:3: error: initialization from incompatible pointer type [-Werror] - valpy_hash, /*tp_hash*/ - ^ -./python/py-value.c:1696:3: error: (near initialization for $B!F(Bvalue_object_type.tp_hash$B!G(B) [-Werror] -cc1: all warnings being treated as errors -Makefile:2628: recipe for target 'py-value.o' failed - -This is because in Python 2 tp_hash was: - typedef long (*hashfunc)(PyObject *); -while in Python 3 tp_hash is: - typedef Py_hash_t (*hashfunc)(PyObject *); - -Py_hash_t is int for 32-bit hosts and long for 64-bit hosts. While on 32-bit -hosts sizeof(long)==sizeof(int) still the hashfunc type is formally -incompatible. As this patch should have no compiled code change it is not -really necessary for gdb-7.9, it would fix there just this non-fatal -compilation warning: - ./python/py-value.c:1696:3: warning: initialization from incompatible pointer type - valpy_hash, /*tp_hash*/ - ^ - ./python/py-value.c:1696:3: warning: (near initialization for $B!F(Bvalue_object_type.tp_hash$B!G(B) - -A question is whether the autoconf test isn't an overkill. One could use -instead just: - #if PYTHON_ABI_VERSION >= 3 -Also one could use that #if either just at the valpy_hash() definition or one -could provide Py_hash_t in gdb/defs.h or one could provide some GDB_Py_hash_t -in gdb/defs.h. - -Tested compilation with: - python-devel-2.7.9-4.fc22.x86_64 - python-devel-2.7.9-4.fc22.i686 - python3-devel-3.4.2-4.fc22.x86_64 - python3-devel-3.4.2-4.fc22.i686 - - -Jan - ---ZPt4rx8FFjLCG7dd -Content-Type: text/plain; charset=us-ascii -Content-Disposition: inline; filename=1 - -gdb/ -2015-02-04 Jan Kratochvil - - * configure.ac <"${have_libpython}" != no>: Define Py_hash_t. - * python/py-value.c (valpy_fetch_lazy): Use it. Remove cast to the - return type. - * config.in: Regenerate. - * configure: Regenerate. - -diff --git a/gdb/config.in b/gdb/config.in -index 806cbac..44acfac 100644 ---- a/gdb/config.in -+++ b/gdb/config.in -@@ -617,6 +617,9 @@ - /* Define if the python directory should be relocated when GDB is moved. */ - #undef PYTHON_PATH_RELOCATABLE - -+/* Provide Python 3 Py_hash_t for Python 2. */ -+#undef Py_hash_t -+ - /* Relocated directory for source files. */ - #undef RELOC_SRCDIR - -diff --git a/gdb/configure b/gdb/configure -index 9632f9a..65f5b2c 100755 ---- a/gdb/configure -+++ b/gdb/configure -@@ -8749,6 +8749,45 @@ rm -f conftest.err conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${python_has_threads}" >&5 - $as_echo "${python_has_threads}" >&6; } - CPPFLAGS="${saved_CPPFLAGS}" -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Py_hash_t" >&5 -+$as_echo_n "checking for Py_hash_t... " >&6; } -+if test "${gdb_cv_Py_hash_t+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ old_CFLAGS="$CFLAGS" -+ CFLAGS="$CFLAGS $PYTHON_CFLAGS" -+ old_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+Py_hash_t var; -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ gdb_cv_Py_hash_t=yes -+else -+ gdb_cv_Py_hash_t=no -+ -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ CPPFLAGS="$old_CPPFLAGS" -+ CFLAGS="$old_CFLAGS" -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_Py_hash_t" >&5 -+$as_echo "$gdb_cv_Py_hash_t" >&6; } -+ if test "x$gdb_cv_Py_hash_t" = "xno"; then -+ -+$as_echo "#define Py_hash_t long" >>confdefs.h -+ -+ fi - else - # Even if Python support is not compiled in, we need to have this file - # included so that the "python" command, et.al., still exists. -diff --git a/gdb/configure.ac b/gdb/configure.ac -index dfc6947..f335b7b 100644 ---- a/gdb/configure.ac -+++ b/gdb/configure.ac -@@ -1016,6 +1016,25 @@ if test "${have_libpython}" != no; then - ]]), [python_has_threads=no], [python_has_threads=yes]) - AC_MSG_RESULT(${python_has_threads}) - CPPFLAGS="${saved_CPPFLAGS}" -+ -+ AC_CACHE_CHECK([for Py_hash_t], gdb_cv_Py_hash_t, -+ old_CFLAGS="$CFLAGS" -+ CFLAGS="$CFLAGS $PYTHON_CFLAGS" -+ old_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" -+ AC_TRY_COMPILE( -+ [#include ], -+ [Py_hash_t var;], -+ gdb_cv_Py_hash_t=yes, -+ gdb_cv_Py_hash_t=no -+ ) -+ CPPFLAGS="$old_CPPFLAGS" -+ CFLAGS="$old_CFLAGS" -+ ) -+ if test "x$gdb_cv_Py_hash_t" = "xno"; then -+ AC_DEFINE(Py_hash_t, long, -+ [Provide Python 3 Py_hash_t for Python 2.]) -+ fi - else - # Even if Python support is not compiled in, we need to have this file - # included so that the "python" command, et.al., still exists. -diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c -index 4c4d36e..5a13777 100644 ---- a/gdb/python/py-value.c -+++ b/gdb/python/py-value.c -@@ -895,10 +895,10 @@ valpy_fetch_lazy (PyObject *self, PyObject *args) - - /* Calculate and return the address of the PyObject as the value of - the builtin __hash__ call. */ --static long -+static Py_hash_t - valpy_hash (PyObject *self) - { -- return (long) (intptr_t) self; -+ return (intptr_t) self; - } - - enum valpy_opcode diff --git a/gdb-python3-testsuite.patch b/gdb-python3-testsuite.patch deleted file mode 100644 index 3cb0635..0000000 --- a/gdb-python3-testsuite.patch +++ /dev/null @@ -1,56 +0,0 @@ -http://sourceware.org/ml/gdb-patches/2015-02/msg00361.html -Subject: PR python/17927 (Python 3 testsuite compatability) - -This patch updates the Python testsuite to maintain Python 3 -compatibility. I'll check it in under the obvious tomorrow (if -nobody objects otherwise.) - -Cheers - -Phil - - -2015-02-16 Phil Muldoon - - PR python/17927 - * gdb.python/py-objfile.exp: Use print () - * gdb.python/py-type.exp: Ditto. - * gdb.python/py-framefilter.py: Update to use map in - Python 3. - --- - -diff --git a/gdb/testsuite/gdb.python/py-framefilter.py b/gdb/testsuite/gdb.python/py-framefilter.py -index 0de026c..8c65edc 100644 ---- a/gdb/testsuite/gdb.python/py-framefilter.py -+++ b/gdb/testsuite/gdb.python/py-framefilter.py -@@ -145,7 +145,10 @@ class ErrorFilter(): - gdb.frame_filters [self.name] = self - - def filter(self, frame_iter): -- return itertools.imap(ErrorInName, frame_iter) -+ if hasattr(itertools, "imap"): -+ return itertools.imap(ErrorInName, frame_iter) -+ else: -+ return map(ErrorInName, frame_iter) - - FrameFilter() - FrameElider() -diff --git a/gdb/testsuite/gdb.python/py-type.exp b/gdb/testsuite/gdb.python/py-type.exp -index c4c8d9f..6c4e5f8 100644 ---- a/gdb/testsuite/gdb.python/py-type.exp -+++ b/gdb/testsuite/gdb.python/py-type.exp -@@ -247,10 +247,10 @@ restart_gdb "${binfile}" - # Skip all tests if Python scripting is not enabled. - if { [skip_python_tests] } { continue } - --gdb_test "python print gdb.lookup_type('char').array(1, 0)" \ -+gdb_test "python print (gdb.lookup_type('char').array(1, 0))" \ - "char \\\[0\\\]" - --gdb_test "python print gdb.lookup_type('char').array(1, -1)" \ -+gdb_test "python print (gdb.lookup_type('char').array(1, -1))" \ - "Array length must not be negative.*" - - with_test_prefix "lang_c" { - diff --git a/gdb-rhbz1260558-ppc64le-skip_trampoline_code.patch b/gdb-rhbz1260558-ppc64le-skip_trampoline_code.patch new file mode 100644 index 0000000..12d8f98 --- /dev/null +++ b/gdb-rhbz1260558-ppc64le-skip_trampoline_code.patch @@ -0,0 +1,257 @@ +http://sourceware.org/ml/gdb-patches/2015-09/msg00183.html +Subject: [ppc64le patch v3] Use skip_entrypoint for skip_trampoline_code + + +--mYCpIKhGyMATD0i+ +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline + +An update to PASS the testcase on non-ppc64le archs. + +--mYCpIKhGyMATD0i+ +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline; filename=4 + +gdb/ChangeLog +2015-09-07 Jan Kratochvil + + * linespec.c (minsym_found): Call gdbarch_skip_entrypoint. + * ppc64-tdep.c (ppc64_skip_trampoline_code): Rename to ... + (ppc64_skip_trampoline_code_1): ... here. + (ppc64_skip_trampoline_code): New wrapper function. + * symtab.c (find_function_start_sal): Call gdbarch_skip_entrypoint. + +gdb/testsuite/ChangeLog +2015-09-07 Jan Kratochvil + + * gdb.opt/solib-intra-step-lib.c: New file. + * gdb.opt/solib-intra-step-main.c: New file. + * gdb.opt/solib-intra-step.exp: New file. + +diff --git a/gdb/linespec.c b/gdb/linespec.c +index 8f102fa..4c29c12 100644 +--- a/gdb/linespec.c ++++ b/gdb/linespec.c +@@ -3570,6 +3570,8 @@ minsym_found (struct linespec_state *self, struct objfile *objfile, + sal.pc = MSYMBOL_VALUE_ADDRESS (objfile, msymbol); + sal.pc = gdbarch_convert_from_func_ptr_addr (gdbarch, sal.pc, + ¤t_target); ++ if (gdbarch_skip_entrypoint_p (gdbarch)) ++ sal.pc = gdbarch_skip_entrypoint (gdbarch, sal.pc); + } + else + skip_prologue_sal (&sal); +diff --git a/gdb/ppc64-tdep.c b/gdb/ppc64-tdep.c +index bb23b6a..4a0b93a 100644 +--- a/gdb/ppc64-tdep.c ++++ b/gdb/ppc64-tdep.c +@@ -454,8 +454,8 @@ ppc64_standard_linkage4_target (struct frame_info *frame, + When the execution direction is EXEC_REVERSE, scan backward to + check whether we are in the middle of a PLT stub. */ + +-CORE_ADDR +-ppc64_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc) ++static CORE_ADDR ++ppc64_skip_trampoline_code_1 (struct frame_info *frame, CORE_ADDR pc) + { + #define MAX(a,b) ((a) > (b) ? (a) : (b)) + unsigned int insns[MAX (MAX (MAX (ARRAY_SIZE (ppc64_standard_linkage1), +@@ -530,6 +530,20 @@ ppc64_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc) + return 0; + } + ++/* Wrapper of ppc64_skip_trampoline_code_1 checking also ++ ppc_elfv2_skip_entrypoint. */ ++ ++CORE_ADDR ++ppc64_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc) ++{ ++ struct gdbarch *gdbarch = get_frame_arch (frame); ++ ++ pc = ppc64_skip_trampoline_code_1 (frame, pc); ++ if (pc != 0 && gdbarch_skip_entrypoint_p (gdbarch)) ++ pc = gdbarch_skip_entrypoint (gdbarch, pc); ++ return pc; ++} ++ + /* Support for convert_from_func_ptr_addr (ARCH, ADDR, TARG) on PPC64 + GNU/Linux. + +diff --git a/gdb/symtab.c b/gdb/symtab.c +index 1ba691e..f65e809 100644 +--- a/gdb/symtab.c ++++ b/gdb/symtab.c +@@ -3629,7 +3629,11 @@ find_function_start_sal (struct symbol *sym, int funfirstline) + && (COMPUNIT_LOCATIONS_VALID (SYMTAB_COMPUNIT (sal.symtab)) + || SYMTAB_LANGUAGE (sal.symtab) == language_asm)) + { ++ struct gdbarch *gdbarch = symbol_arch (sym); ++ + sal.pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym)); ++ if (gdbarch_skip_entrypoint_p (gdbarch)) ++ sal.pc = gdbarch_skip_entrypoint (gdbarch, sal.pc); + return sal; + } + +diff --git a/gdb/testsuite/gdb.opt/solib-intra-step-lib.c b/gdb/testsuite/gdb.opt/solib-intra-step-lib.c +new file mode 100644 +index 0000000..9ab1211 +--- /dev/null ++++ b/gdb/testsuite/gdb.opt/solib-intra-step-lib.c +@@ -0,0 +1,30 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2015 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 . */ ++ ++#include ++ ++void ++shlib_second (int dummy) ++{ /* second-retry */ ++ abort (); /* second-hit */ ++} ++ ++void ++shlib_first (void) ++{ /* first-retry */ ++ shlib_second (0); /* first-hit */ ++} +diff --git a/gdb/testsuite/gdb.opt/solib-intra-step-main.c b/gdb/testsuite/gdb.opt/solib-intra-step-main.c +new file mode 100644 +index 0000000..186bd5f +--- /dev/null ++++ b/gdb/testsuite/gdb.opt/solib-intra-step-main.c +@@ -0,0 +1,25 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2015 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 . */ ++ ++extern void shlib_first (void); ++ ++int ++main (void) ++{ ++ shlib_first (); ++ return 0; ++} +diff --git a/gdb/testsuite/gdb.opt/solib-intra-step.exp b/gdb/testsuite/gdb.opt/solib-intra-step.exp +new file mode 100644 +index 0000000..044c4bd +--- /dev/null ++++ b/gdb/testsuite/gdb.opt/solib-intra-step.exp +@@ -0,0 +1,86 @@ ++# Copyright 2015 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 . ++ ++standard_testfile ++ ++if {[skip_shlib_tests]} { ++ return 0 ++} ++ ++# Library file. ++set libname "${testfile}-lib" ++set srcfile_lib ${srcdir}/${subdir}/${libname}.c ++set binfile_lib [standard_output_file ${libname}.so] ++set lib_flags [list debug optimize=-O2] ++# Binary file. ++set testfile "${testfile}-main" ++set srcfile ${srcdir}/${subdir}/${testfile}.c ++set binfile [standard_output_file ${testfile}] ++set bin_flags [list debug shlib=${binfile_lib}] ++ ++if [get_compiler_info] { ++ return -1 ++} ++ ++if { [gdb_compile_shlib ${srcfile_lib} ${binfile_lib} $lib_flags] != "" ++ || [gdb_compile ${srcfile} ${binfile} executable $bin_flags] != "" } { ++ untested "Could not compile $binfile_lib or $binfile." ++ return -1 ++} ++ ++clean_restart ${binfile} ++gdb_load_shlibs $binfile_lib ++ ++if ![runto_main] then { ++ return 0 ++} ++ ++set test "first-hit" ++gdb_test_multiple "step" $test { ++ -re " first-hit .*\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re " first-retry .*\r\n$gdb_prompt $" { ++ gdb_test "step" " first-hit .*" "first-hit (optimized)" ++ } ++} ++ ++set test "second-hit" ++gdb_test_multiple "step" $test { ++ -re " second-hit .*\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re " first-retry .*\r\n$gdb_prompt $" { ++ set test "second-hit (optimized 1)" ++ gdb_test_multiple "step" $test { ++ -re " second-hit .*\r\n$gdb_prompt $" { ++ pass $test ++ } ++ -re " first-hit .*\r\n$gdb_prompt $" { ++ gdb_test "step" " second-hit .*" "second-hit (optimized 2)" ++ } ++ } ++ } ++ -re " second-retry .*\r\n$gdb_prompt $" { ++ gdb_test "step" " second-hit .*" "second-hit (optimized 3)" ++ } ++} ++ ++if ![runto_main] then { ++ return 0 ++} ++ ++gdb_breakpoint "shlib_second" ++gdb_continue_to_breakpoint "second-hit" ".* (second-hit|second-retry) .*" + +--mYCpIKhGyMATD0i+-- + diff --git a/gdb-rhbz1270564-invalid-dwarf-regno.patch b/gdb-rhbz1270564-invalid-dwarf-regno.patch new file mode 100644 index 0000000..ce0aa4f --- /dev/null +++ b/gdb-rhbz1270564-invalid-dwarf-regno.patch @@ -0,0 +1,220 @@ +http://sourceware.org/ml/gdb-patches/2015-10/msg00166.html +Subject: [patch] Fix internal error on DW_OP_bregx(-1) + + +--ibTvN161/egqYuK8 +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline + +Hi, + +https://bugzilla.redhat.com/show_bug.cgi?id=1270564#c15 +https://bugzilla.redhat.com/attachment.cgi?id=1081772 + +clang-3.5.0-9.fc22.x86_64 + <3><22b2>: Abbrev Number: 69 (DW_TAG_variable) + <22b3> DW_AT_location : 7 byte block: 92 ff ff ff ff f 0 (DW_OP_bregx: 4294967295 (r-1) 0) + <22bb> DW_AT_name : (indirect string, offset: 0x2a36): texture_data + <22c1> DW_AT_type : <0x1d3> + +(gdb) p variable +warning: Unmapped DWARF Register #-1 encountered. +regcache.c:177: internal-error: register_size: Assertion `regnum >= 0 && regnum < (gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch))' failed. +[...] +Quit this debugging session? (y or n) FAIL: gdb.dwarf2/dw2-regno-invalid.exp: p variable (GDB internal error) + +-> (x86_64) +(gdb) p variable +warning: Unmapped DWARF Register #-1 encountered. +Invalid register #-1, expecting 0 <= # < 220 +(gdb) PASS: gdb.dwarf2/dw2-regno-invalid.exp: p variable +-> (i386) +(gdb) p variable +Invalid register #104, expecting 0 <= # < 104 +(gdb) PASS: gdb.dwarf2/dw2-regno-invalid.exp: p variable + +GDB calls gdbarch_dwarf2_reg_to_regnum() first which returns -1 in the x86_64 +case + if (regnum == -1) + warning (_("Unmapped DWARF Register #%d encountered."), reg); +but in i386 case it does: + /* This will hopefully provoke a warning. */ + return gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch); +and the default implementation is a nop, leaving whatever register number +the DWARF specified. + +No regressions on {x86_64,x86_64-m32,i686}-fedorarawhide-linux-gnu. + + +Jan + +--ibTvN161/egqYuK8 +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline; filename="undefreg.patch" + +gdb/ChangeLog +2015-10-12 Jan Kratochvil + + * findvar.c (address_from_register): Check REGNUM validity. + +gdb/testsuite/ChangeLog +2015-10-12 Jan Kratochvil + + * gdb.dwarf2/dw2-regno-invalid.S: New file. + * gdb.dwarf2/dw2-regno-invalid.exp: New file. + +diff --git a/gdb/findvar.c b/gdb/findvar.c +index 0f46e53..855947d 100644 +--- a/gdb/findvar.c ++++ b/gdb/findvar.c +@@ -927,6 +927,12 @@ address_from_register (int regnum, struct frame_info *frame) + struct type *type = builtin_type (gdbarch)->builtin_data_ptr; + struct value *value; + CORE_ADDR result; ++ int regnum_max_excl = (gdbarch_num_regs (gdbarch) ++ + gdbarch_num_pseudo_regs (gdbarch)); ++ ++ if (regnum < 0 || regnum >= regnum_max_excl) ++ error (_("Invalid register #%d, expecting 0 <= # < %d"), regnum, ++ regnum_max_excl); + + /* This routine may be called during early unwinding, at a time + where the ID of FRAME is not yet known. Calling value_from_register +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-regno-invalid.S b/gdb/testsuite/gdb.dwarf2/dw2-regno-invalid.S +new file mode 100644 +index 0000000..075bfd6 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-regno-invalid.S +@@ -0,0 +1,91 @@ ++/* Copyright 2015 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 . */ ++ ++ .section .debug_info ++debug_start: ++ .4byte debug_end - 1f /* Length of Compilation Unit Info */ ++1: ++ .2byte 0x3 /* DWARF version number */ ++ .4byte .Ldebug_abbrev0 /* Offset Into Abbrev. Section */ ++ .byte 0x4 /* Pointer Size (in bytes) */ ++ .uleb128 0x1 /* (DIE (0xb) DW_TAG_compile_unit) */ ++ .ascii "clang-3.5.0-9.fc22.x86_64\0" /* DW_AT_producer */ ++ .byte 0x1 /* DW_AT_language */ ++ .ascii "1.c\0" /* DW_AT_name */ ++ .4byte main_label /* DW_AT_low_pc */ ++ .4byte main_label+0x10000 /* DW_AT_high_pc */ ++ ++ .uleb128 2 /* Abbrev: DW_TAG_subprogram */ ++ .byte 1 /* DW_AT_external */ ++ .ascii "main\0" /* DW_AT_name */ ++ .4byte main_label /* DW_AT_low_pc */ ++ .4byte main_label+0x10000 /* DW_AT_high_pc */ ++ ++ .uleb128 0x4 /* (DW_TAG_variable) */ ++ .ascii "variable\0" /* DW_AT_name */ ++ .2byte 2f - 1f /* DW_AT_location: DW_FORM_block2 */ ++1: ++ .byte 0x92 /* DW_OP_bregx */ ++ .uleb128 0xffffffff ++ .sleb128 0 ++2: ++ ++ .byte 0x0 /* end of children of main */ ++ .byte 0x0 /* end of children of CU */ ++debug_end: ++ ++ .section .debug_abbrev ++.Ldebug_abbrev0: ++ .uleb128 0x1 /* (abbrev code) */ ++ .uleb128 0x11 /* (TAG: DW_TAG_compile_unit) */ ++ .byte 0x1 /* DW_children_yes */ ++ .uleb128 0x25 /* (DW_AT_producer) */ ++ .uleb128 0x8 /* (DW_FORM_string) */ ++ .uleb128 0x13 /* (DW_AT_language) */ ++ .uleb128 0xb /* (DW_FORM_data1) */ ++ .uleb128 0x3 /* (DW_AT_name) */ ++ .uleb128 0x8 /* (DW_FORM_string) */ ++ .uleb128 0x11 /* DW_AT_low_pc */ ++ .uleb128 0x1 /* DW_FORM_addr */ ++ .uleb128 0x12 /* DW_AT_high_pc */ ++ .uleb128 0x1 /* DW_FORM_addr */ ++ .byte 0x0 ++ .byte 0x0 ++ ++ .uleb128 2 /* Abbrev code */ ++ .uleb128 0x2e /* DW_TAG_subprogram */ ++ .byte 1 /* has_children */ ++ .uleb128 0x3f /* DW_AT_external */ ++ .uleb128 0xc /* DW_FORM_flag */ ++ .uleb128 0x3 /* DW_AT_name */ ++ .uleb128 0x8 /* DW_FORM_string */ ++ .uleb128 0x11 /* DW_AT_low_pc */ ++ .uleb128 0x1 /* DW_FORM_addr */ ++ .uleb128 0x12 /* DW_AT_high_pc */ ++ .uleb128 0x1 /* DW_FORM_addr */ ++ .byte 0x0 /* Terminator */ ++ .byte 0x0 /* Terminator */ ++ ++ ++ .uleb128 0x4 /* (abbrev code) */ ++ .uleb128 0x34 /* (TAG: DW_TAG_variable) */ ++ .byte 0x0 /* DW_children_yes */ ++ .uleb128 0x3 /* (DW_AT_name) */ ++ .uleb128 0x8 /* (DW_FORM_string) */ ++ .uleb128 0x02 /* (DW_AT_location) */ ++ .uleb128 0x3 /* (DW_FORM_block2) */ ++ .byte 0x0 ++ .byte 0x0 ++ .byte 0x0 +diff --git a/gdb/testsuite/gdb.dwarf2/dw2-regno-invalid.exp b/gdb/testsuite/gdb.dwarf2/dw2-regno-invalid.exp +new file mode 100644 +index 0000000..7c3a404 +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-regno-invalid.exp +@@ -0,0 +1,32 @@ ++# Copyright 2015 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 . ++load_lib dwarf.exp ++ ++# This test can only be run on targets which support DWARF-2 and use gas. ++if {![dwarf2_support]} { ++ return 0 ++} ++ ++standard_testfile .S main.c ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile2}" \ ++ "${binfile}" executable {}] != "" } { ++ return -1 ++} ++ ++clean_restart ${binfile} ++runto_main ++ ++gdb_test "p variable" + +--ibTvN161/egqYuK8-- + diff --git a/gdb-rhbz795424-bitpos-20of25.patch b/gdb-rhbz795424-bitpos-20of25.patch index b02b07f..c926ed9 100644 --- a/gdb-rhbz795424-bitpos-20of25.patch +++ b/gdb-rhbz795424-bitpos-20of25.patch @@ -463,10 +463,10 @@ Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=bitpos-main.patch -Index: gdb-7.8.90.20150202/gdb/ada-lang.c +Index: gdb-7.9.90.20150709/gdb/ada-lang.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/ada-lang.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/ada-lang.c 2015-02-11 16:01:59.586966229 +0100 +--- gdb-7.9.90.20150709.orig/gdb/ada-lang.c 2015-07-09 18:24:38.968355881 +0200 ++++ gdb-7.9.90.20150709/gdb/ada-lang.c 2015-07-09 18:24:42.219383612 +0200 @@ -74,7 +74,7 @@ static struct type *desc_bounds_type (st static struct value *desc_bounds (struct value *); @@ -557,7 +557,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c { if (address == 0) return 0; -@@ -1712,7 +1713,7 @@ desc_bounds (struct value *arr) +@@ -1711,7 +1712,7 @@ desc_bounds (struct value *arr) /* If TYPE is the type of an array-descriptor (fat pointer), the bit position of the field containing the address of the bounds data. */ @@ -566,7 +566,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c fat_pntr_bounds_bitpos (struct type *type) { return TYPE_FIELD_BITPOS (desc_base_type (type), 1); -@@ -1778,7 +1779,7 @@ desc_data (struct value *arr) +@@ -1777,7 +1778,7 @@ desc_data (struct value *arr) /* If TYPE is the type of an array-descriptor (fat pointer), the bit position of the field containing the address of the data. */ @@ -575,7 +575,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c fat_pntr_data_bitpos (struct type *type) { return TYPE_FIELD_BITPOS (desc_base_type (type), 0); -@@ -1813,7 +1814,7 @@ desc_one_bound (struct value *bounds, in +@@ -1812,7 +1813,7 @@ desc_one_bound (struct value *bounds, in of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper bound, if WHICH is 1. The first bound is I=1. */ @@ -584,7 +584,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c desc_bound_bitpos (struct type *type, int i, int which) { return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2); -@@ -2003,7 +2004,7 @@ ada_type_of_array (struct value *arr, in +@@ -2002,7 +2003,7 @@ ada_type_of_array (struct value *arr, in zero, and does not need to be recomputed. */ if (lo < hi) { @@ -593,7 +593,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0); TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8; -@@ -2163,7 +2164,7 @@ decode_packed_array_bitsize (struct type +@@ -2162,7 +2163,7 @@ decode_packed_array_bitsize (struct type the length is arbitrary. */ static struct type * @@ -602,7 +602,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c { struct type *new_elt_type; struct type *new_type; -@@ -2217,7 +2218,7 @@ decode_constrained_packed_array_type (st +@@ -2216,7 +2217,7 @@ decode_constrained_packed_array_type (st char *name; const char *tail; struct type *shadow_type; @@ -611,7 +611,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c if (!raw_name) raw_name = ada_type_name (desc_base_type (type)); -@@ -2288,7 +2289,8 @@ decode_constrained_packed_array (struct +@@ -2287,7 +2288,8 @@ decode_constrained_packed_array (struct array with no wrapper. In order to interpret the value through the (left-justified) packed array type we just built, we must first left-justify it. */ @@ -621,7 +621,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c ULONGEST mod; mod = ada_modulus (value_type (arr)) - 1; -@@ -2389,15 +2391,16 @@ has_negatives (struct type *type) +@@ -2388,15 +2390,16 @@ has_negatives (struct type *type) struct value * ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr, @@ -644,7 +644,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c byte of source that are unused */ accumSize; /* Number of meaningful bits in accum */ unsigned char *bytes; /* First byte containing data to unpack */ -@@ -2431,7 +2434,7 @@ ada_value_primitive_packed_val (struct v +@@ -2441,7 +2444,7 @@ ada_value_primitive_packed_val (struct v if (obj != NULL) { @@ -653,7 +653,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c set_value_component_location (v, obj); set_value_bitpos (v, bit_offset + value_bitpos (obj)); -@@ -2547,7 +2550,7 @@ ada_value_primitive_packed_val (struct v +@@ -2562,7 +2565,7 @@ ada_value_primitive_packed_val (struct v not overlap. */ static void move_bits (gdb_byte *target, int targ_offset, const gdb_byte *source, @@ -662,7 +662,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c { unsigned int accum, mask; int accum_bits, chunk_size; -@@ -2637,7 +2640,7 @@ ada_value_assign (struct value *toval, s +@@ -2652,7 +2655,7 @@ ada_value_assign (struct value *toval, s { int len = (value_bitpos (toval) + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT; @@ -671,16 +671,16 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c gdb_byte *buffer = alloca (len); struct value *val; CORE_ADDR to_addr = value_address (toval); -@@ -2682,7 +2685,7 @@ value_assign_to_component (struct value +@@ -2703,7 +2706,7 @@ value_assign_to_component (struct value (LONGEST) (value_address (component) - value_address (container)); - int bit_offset_in_container = + int bit_offset_in_container = value_bitpos (component) - value_bitpos (container); - int bits; + LONGEST bits; - + val = value_cast (value_type (component), val); -@@ -4219,7 +4222,7 @@ ensure_lval (struct value *val) +@@ -4294,7 +4297,7 @@ ensure_lval (struct value *val) if (VALUE_LVAL (val) == not_lval || VALUE_LVAL (val) == lval_internalvar) { @@ -689,7 +689,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c const CORE_ADDR addr = value_as_long (value_allocate_space_in_inferior (len)); -@@ -4293,7 +4296,7 @@ static CORE_ADDR +@@ -4378,7 +4381,7 @@ static CORE_ADDR value_pointer (struct value *value, struct type *type) { struct gdbarch *gdbarch = get_type_arch (type); @@ -698,7 +698,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c gdb_byte *buf = alloca (len); CORE_ADDR addr; -@@ -6436,7 +6439,7 @@ value_tag_from_contents_and_address (str +@@ -6521,7 +6524,7 @@ value_tag_from_contents_and_address (str const gdb_byte *valaddr, CORE_ADDR address) { @@ -707,7 +707,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c struct type *tag_type; if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset, -@@ -6901,7 +6904,7 @@ ada_in_variant (LONGEST val, struct type +@@ -6991,7 +6994,7 @@ ada_in_variant (LONGEST val, struct type only in that it can handle packed values of arbitrary type. */ static struct value * @@ -716,7 +716,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c struct type *arg_type) { struct type *type; -@@ -6913,7 +6916,7 @@ ada_value_primitive_field (struct value +@@ -7003,7 +7006,7 @@ ada_value_primitive_field (struct value if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0) { @@ -725,7 +725,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno); return ada_value_primitive_packed_val (arg1, value_contents (arg1), -@@ -6940,9 +6943,9 @@ ada_value_primitive_field (struct value +@@ -7030,9 +7033,9 @@ ada_value_primitive_field (struct value Returns 1 if found, 0 otherwise. */ static int @@ -737,7 +737,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c int *index_p) { int i; -@@ -6960,8 +6963,8 @@ find_struct_field (const char *name, str +@@ -7050,8 +7053,8 @@ find_struct_field (const char *name, str for (i = 0; i < TYPE_NFIELDS (type); i += 1) { @@ -748,7 +748,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c const char *t_field_name = TYPE_FIELD_NAME (type, i); if (t_field_name == NULL) -@@ -7031,7 +7034,7 @@ num_visible_fields (struct type *type) +@@ -7121,7 +7124,7 @@ num_visible_fields (struct type *type) Searches recursively through wrapper fields (e.g., '_parent'). */ static struct value * @@ -757,7 +757,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c struct type *type) { int i; -@@ -7064,7 +7067,7 @@ ada_search_struct_field (char *name, str +@@ -7154,7 +7157,7 @@ ada_search_struct_field (char *name, str int j; struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type, i)); @@ -766,7 +766,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c for (j = 0; j < TYPE_NFIELDS (field_type); j += 1) { -@@ -7082,8 +7085,8 @@ ada_search_struct_field (char *name, str +@@ -7172,8 +7175,8 @@ ada_search_struct_field (char *name, str return NULL; } @@ -777,7 +777,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c /* Return field #INDEX in ARG, where the index is that returned by -@@ -7092,7 +7095,7 @@ static struct value *ada_index_struct_fi +@@ -7182,7 +7185,7 @@ static struct value *ada_index_struct_fi * If found, return value, else return NULL. */ static struct value * @@ -786,7 +786,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c struct type *type) { return ada_index_struct_field_1 (&index, arg, offset, type); -@@ -7104,7 +7107,7 @@ ada_index_struct_field (int index, struc +@@ -7194,7 +7197,7 @@ ada_index_struct_field (int index, struc * *INDEX_P. */ static struct value * @@ -795,7 +795,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c struct type *type) { int i; -@@ -7194,7 +7197,8 @@ ada_value_struct_elt (struct value *arg, +@@ -7284,7 +7287,8 @@ ada_value_struct_elt (struct value *arg, v = ada_search_struct_field (name, arg, 0, t); else { @@ -805,7 +805,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c struct type *field_type; CORE_ADDR address; -@@ -7511,8 +7515,8 @@ ada_coerce_ref (struct value *val0) +@@ -7601,8 +7605,8 @@ ada_coerce_ref (struct value *val0) /* Return OFF rounded upward if necessary to a multiple of ALIGNMENT (a power of 2). */ @@ -816,7 +816,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c { return (off + alignment - 1) & ~(alignment - 1); } -@@ -7894,10 +7898,9 @@ ada_template_to_fixed_record_type_1 (str +@@ -7996,10 +8000,9 @@ ada_template_to_fixed_record_type_1 (str struct value *mark = value_mark (); struct value *dval; struct type *rtype; @@ -829,7 +829,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c int f; /* Compute the number of fields in this record type that are going -@@ -7975,7 +7978,7 @@ ada_template_to_fixed_record_type_1 (str +@@ -8077,7 +8080,7 @@ ada_template_to_fixed_record_type_1 (str that follow this one. */ if (ada_is_aligner_type (field_type)) { @@ -838,7 +838,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c field_valaddr = cond_offset_host (field_valaddr, field_offset); field_address = cond_offset_target (field_address, field_offset); -@@ -8111,11 +8114,11 @@ ada_template_to_fixed_record_type_1 (str +@@ -8213,11 +8216,11 @@ ada_template_to_fixed_record_type_1 (str if (TYPE_LENGTH (type) <= 0) { if (TYPE_NAME (rtype)) @@ -854,7 +854,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c } else { -@@ -8539,7 +8542,8 @@ to_fixed_array_type (struct type *type0, +@@ -8684,7 +8687,8 @@ to_fixed_array_type (struct type *type0, type was a regular (non-packed) array type. As a result, the bitsize of the array elements needs to be set again, and the array length needs to be recomputed based on that bitsize. */ @@ -864,10 +864,10 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.c int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0); TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0); -Index: gdb-7.8.90.20150202/gdb/ada-lang.h +Index: gdb-7.9.90.20150709/gdb/ada-lang.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/ada-lang.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/ada-lang.h 2015-02-11 16:01:59.586966229 +0100 +--- gdb-7.9.90.20150709.orig/gdb/ada-lang.h 2015-07-09 18:24:38.969355889 +0200 ++++ gdb-7.9.90.20150709/gdb/ada-lang.h 2015-07-09 18:24:42.219383612 +0200 @@ -179,7 +179,7 @@ extern void ada_print_type (struct type extern void ada_print_typedef (struct type *type, struct symbol *new_symbol, struct ui_file *stream); @@ -895,11 +895,11 @@ Index: gdb-7.8.90.20150202/gdb/ada-lang.h struct type *); extern struct type *ada_coerce_to_simple_array_type (struct type *); -Index: gdb-7.8.90.20150202/gdb/ada-typeprint.c +Index: gdb-7.9.90.20150709/gdb/ada-typeprint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/ada-typeprint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/ada-typeprint.c 2015-02-11 16:01:59.587966234 +0100 -@@ -883,8 +883,8 @@ ada_print_type (struct type *type0, cons +--- gdb-7.9.90.20150709.orig/gdb/ada-typeprint.c 2015-07-09 18:24:38.969355889 +0200 ++++ gdb-7.9.90.20150709/gdb/ada-typeprint.c 2015-07-09 18:24:42.220383621 +0200 +@@ -886,8 +886,8 @@ ada_print_type (struct type *type0, cons const char *name = ada_type_name (type); if (!ada_is_range_type_name (name)) @@ -910,7 +910,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-typeprint.c else { fprintf_filtered (stream, "range "); -@@ -905,7 +905,8 @@ ada_print_type (struct type *type0, cons +@@ -908,7 +908,8 @@ ada_print_type (struct type *type0, cons } break; case TYPE_CODE_FLT: @@ -920,10 +920,10 @@ Index: gdb-7.8.90.20150202/gdb/ada-typeprint.c break; case TYPE_CODE_ENUM: if (show < 0) -Index: gdb-7.8.90.20150202/gdb/ada-valprint.c +Index: gdb-7.9.90.20150709/gdb/ada-valprint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/ada-valprint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/ada-valprint.c 2015-02-11 16:01:59.587966234 +0100 +--- gdb-7.9.90.20150709.orig/gdb/ada-valprint.c 2015-07-09 18:24:38.970355898 +0200 ++++ gdb-7.9.90.20150709/gdb/ada-valprint.c 2015-07-09 18:24:42.220383621 +0200 @@ -33,11 +33,11 @@ #include "objfiles.h" @@ -938,16 +938,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-valprint.c const struct language_defn *); -@@ -129,7 +129,7 @@ val_print_packed_array_elements (struct - unsigned int things_printed = 0; - unsigned len; - struct type *elttype, *index_type; -- unsigned eltlen; -+ ULONGEST eltlen; - unsigned long bitsize = TYPE_FIELD_BITSIZE (type, 0); - struct value *mark = value_mark (); - LONGEST low = 0; -@@ -278,7 +278,7 @@ ada_emit_char (int c, struct type *type, +@@ -279,7 +279,7 @@ ada_emit_char (int c, struct type *type, of a character. */ static int @@ -956,7 +947,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-valprint.c enum bfd_endian byte_order) { if (type_len == 1) -@@ -440,11 +440,11 @@ ada_print_scalar (struct type *type, LON +@@ -441,11 +441,11 @@ ada_print_scalar (struct type *type, LON static void printstr (struct ui_file *stream, struct type *elttype, const gdb_byte *string, @@ -970,7 +961,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-valprint.c unsigned int things_printed = 0; int in_quotes = 0; int need_comma = 0; -@@ -459,9 +459,9 @@ printstr (struct ui_file *stream, struct +@@ -460,9 +460,9 @@ printstr (struct ui_file *stream, struct { /* Position of the character we are examining to see whether it is repeated. */ @@ -982,7 +973,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-valprint.c QUIT; -@@ -492,7 +492,8 @@ printstr (struct ui_file *stream, struct +@@ -493,7 +493,8 @@ printstr (struct ui_file *stream, struct ada_emit_char (char_at (string, i, type_len, byte_order), elttype, stream, '\'', type_len); fputs_filtered ("'", stream); @@ -992,7 +983,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-valprint.c i = rep1 - 1; things_printed += options->repeat_count_threshold; need_comma = 1; -@@ -520,7 +521,7 @@ printstr (struct ui_file *stream, struct +@@ -521,7 +522,7 @@ printstr (struct ui_file *stream, struct void ada_printstr (struct ui_file *stream, struct type *type, @@ -1001,7 +992,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-valprint.c const char *encoding, int force_ellipses, const struct value_print_options *options) { -@@ -530,12 +531,12 @@ ada_printstr (struct ui_file *stream, st +@@ -531,12 +532,12 @@ ada_printstr (struct ui_file *stream, st static int print_variant_part (struct type *type, int field_num, @@ -1016,7 +1007,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-valprint.c const struct language_defn *language) { struct type *var_type = TYPE_FIELD_TYPE (type, field_num); -@@ -571,11 +572,11 @@ print_variant_part (struct type *type, i +@@ -572,11 +573,11 @@ print_variant_part (struct type *type, i static int print_field_values (struct type *type, const gdb_byte *valaddr, @@ -1030,7 +1021,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-valprint.c const struct language_defn *language) { int i, len; -@@ -642,7 +643,7 @@ print_field_values (struct type *type, c +@@ -643,7 +644,7 @@ print_field_values (struct type *type, c } else { @@ -1039,7 +1030,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-valprint.c int bit_size = TYPE_FIELD_BITSIZE (type, i); struct value_print_options opts; -@@ -688,8 +689,8 @@ ada_val_print_string (struct type *type, +@@ -689,8 +690,8 @@ ada_val_print_string (struct type *type, { enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); struct type *elttype = TYPE_TARGET_TYPE (type); @@ -1050,7 +1041,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-valprint.c /* We know that ELTTYPE cannot possibly be null, because we assume that we're called only when TYPE is a string-like type. -@@ -708,7 +709,7 @@ ada_val_print_string (struct type *type, +@@ -709,7 +710,7 @@ ada_val_print_string (struct type *type, elements up to it. */ if (options->stop_print_at_null) { @@ -1059,7 +1050,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-valprint.c /* Look for a NULL char. */ for (temp_len = 0; -@@ -1073,7 +1074,7 @@ ada_val_print_ref (struct type *type, co +@@ -1074,7 +1075,7 @@ ada_val_print_ref (struct type *type, co static void ada_val_print_1 (struct type *type, const gdb_byte *valaddr, @@ -1068,7 +1059,7 @@ Index: gdb-7.8.90.20150202/gdb/ada-valprint.c struct ui_file *stream, int recurse, const struct value *original_value, const struct value_print_options *options, -@@ -1154,7 +1155,7 @@ ada_val_print_1 (struct type *type, cons +@@ -1157,7 +1158,7 @@ ada_val_print_1 (struct type *type, cons void ada_val_print (struct type *type, const gdb_byte *valaddr, @@ -1077,10 +1068,10 @@ Index: gdb-7.8.90.20150202/gdb/ada-valprint.c struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options) -Index: gdb-7.8.90.20150202/gdb/annotate.c +Index: gdb-7.9.90.20150709/gdb/annotate.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/annotate.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/annotate.c 2015-02-11 16:01:59.588966239 +0100 +--- gdb-7.9.90.20150709.orig/gdb/annotate.c 2015-07-09 18:24:38.971355906 +0200 ++++ gdb-7.9.90.20150709/gdb/annotate.c 2015-07-09 18:24:42.221383629 +0200 @@ -542,21 +542,21 @@ annotate_frame_end (void) } @@ -1107,10 +1098,10 @@ Index: gdb-7.8.90.20150202/gdb/annotate.c } void -Index: gdb-7.8.90.20150202/gdb/annotate.h +Index: gdb-7.9.90.20150709/gdb/annotate.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/annotate.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/annotate.h 2015-02-11 16:01:59.588966239 +0100 +--- gdb-7.9.90.20150709.orig/gdb/annotate.h 2015-07-09 18:24:38.971355906 +0200 ++++ gdb-7.9.90.20150709/gdb/annotate.h 2015-07-09 18:24:42.221383629 +0200 @@ -92,8 +92,8 @@ extern void annotate_frame_source_end (v extern void annotate_frame_where (void); extern void annotate_frame_end (void); @@ -1122,11 +1113,11 @@ Index: gdb-7.8.90.20150202/gdb/annotate.h extern void annotate_elt_rep_end (void); extern void annotate_elt (void); extern void annotate_array_section_end (void); -Index: gdb-7.8.90.20150202/gdb/arm-linux-nat.c +Index: gdb-7.9.90.20150709/gdb/arm-linux-nat.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/arm-linux-nat.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/arm-linux-nat.c 2015-02-11 16:01:59.588966239 +0100 -@@ -1186,7 +1186,7 @@ arm_linux_remove_hw_breakpoint (struct t +--- gdb-7.9.90.20150709.orig/gdb/arm-linux-nat.c 2015-07-09 18:24:38.971355906 +0200 ++++ gdb-7.9.90.20150709/gdb/arm-linux-nat.c 2015-07-09 18:24:42.221383629 +0200 +@@ -1362,7 +1362,7 @@ arm_linux_remove_hw_breakpoint (struct t ADDR? */ static int arm_linux_region_ok_for_hw_watchpoint (struct target_ops *self, @@ -1135,10 +1126,10 @@ Index: gdb-7.8.90.20150202/gdb/arm-linux-nat.c { const struct arm_linux_hwbp_cap *cap = arm_linux_get_hwbp_cap (); CORE_ADDR max_wp_length, aligned_addr; -Index: gdb-7.8.90.20150202/gdb/ax-gdb.c +Index: gdb-7.9.90.20150709/gdb/ax-gdb.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/ax-gdb.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/ax-gdb.c 2015-02-11 16:01:59.589966244 +0100 +--- gdb-7.9.90.20150709.orig/gdb/ax-gdb.c 2015-07-09 18:24:38.973355923 +0200 ++++ gdb-7.9.90.20150709/gdb/ax-gdb.c 2015-07-09 18:24:42.222383638 +0200 @@ -82,12 +82,12 @@ static void gen_traced_pop (struct gdbar static void gen_sign_extend (struct agent_expr *, struct type *); static void gen_extend (struct agent_expr *, struct type *); @@ -1238,10 +1229,10 @@ Index: gdb-7.8.90.20150202/gdb/ax-gdb.c { int i, rslt; int nbases = TYPE_N_BASECLASSES (type); -Index: gdb-7.8.90.20150202/gdb/ax-general.c +Index: gdb-7.9.90.20150709/gdb/ax-general.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/ax-general.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/ax-general.c 2015-02-11 16:01:59.589966244 +0100 +--- gdb-7.9.90.20150709.orig/gdb/ax-general.c 2015-07-09 18:24:38.973355923 +0200 ++++ gdb-7.9.90.20150709/gdb/ax-general.c 2015-07-09 18:24:42.223383646 +0200 @@ -193,7 +193,7 @@ ax_zero_ext (struct agent_expr *x, int n /* Append a trace_quick instruction to EXPR, to record N bytes. */ @@ -1251,10 +1242,10 @@ Index: gdb-7.8.90.20150202/gdb/ax-general.c { /* N must fit in a byte. */ if (n < 0 || n > 255) -Index: gdb-7.8.90.20150202/gdb/ax.h +Index: gdb-7.9.90.20150709/gdb/ax.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/ax.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/ax.h 2015-02-11 16:01:59.590966249 +0100 +--- gdb-7.9.90.20150709.orig/gdb/ax.h 2015-07-09 18:24:38.973355923 +0200 ++++ gdb-7.9.90.20150709/gdb/ax.h 2015-07-09 18:24:42.223383646 +0200 @@ -207,7 +207,7 @@ extern void ax_ext (struct agent_expr *E extern void ax_zero_ext (struct agent_expr *EXPR, int N); @@ -1264,11 +1255,11 @@ Index: gdb-7.8.90.20150202/gdb/ax.h /* Append a goto op to EXPR. OP is the actual op (must be aop_goto or aop_if_goto). We assume we don't know the target offset yet, -Index: gdb-7.8.90.20150202/gdb/breakpoint.c +Index: gdb-7.9.90.20150709/gdb/breakpoint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/breakpoint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/breakpoint.c 2015-02-11 16:01:59.593966264 +0100 -@@ -2191,9 +2191,9 @@ should_be_inserted (struct bp_location * +--- gdb-7.9.90.20150709.orig/gdb/breakpoint.c 2015-07-09 18:24:38.977355958 +0200 ++++ gdb-7.9.90.20150709/gdb/breakpoint.c 2015-07-09 18:24:42.227383680 +0200 +@@ -2202,9 +2202,9 @@ should_be_inserted (struct bp_location * { fprintf_unfiltered (gdb_stdlog, "infrun: stepping past non-steppable watchpoint. " @@ -1280,7 +1271,7 @@ Index: gdb-7.8.90.20150202/gdb/breakpoint.c } return 0; } -@@ -6976,7 +6976,7 @@ breakpoint_address_match (struct address +@@ -6995,7 +6995,7 @@ breakpoint_address_match (struct address static int breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1, @@ -1289,7 +1280,7 @@ Index: gdb-7.8.90.20150202/gdb/breakpoint.c CORE_ADDR addr2) { return ((gdbarch_has_global_breakpoints (target_gdbarch ()) -@@ -11700,7 +11700,7 @@ can_use_hardware_watchpoint (struct valu +@@ -11302,7 +11302,7 @@ can_use_hardware_watchpoint (struct valu && TYPE_CODE (vtype) != TYPE_CODE_ARRAY)) { CORE_ADDR vaddr = value_address (v); @@ -1298,10 +1289,10 @@ Index: gdb-7.8.90.20150202/gdb/breakpoint.c int num_regs; len = (target_exact_watchpoints -Index: gdb-7.8.90.20150202/gdb/breakpoint.h +Index: gdb-7.9.90.20150709/gdb/breakpoint.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/breakpoint.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/breakpoint.h 2015-02-11 16:01:59.594966269 +0100 +--- gdb-7.9.90.20150709.orig/gdb/breakpoint.h 2015-07-09 18:24:38.978355966 +0200 ++++ gdb-7.9.90.20150709/gdb/breakpoint.h 2015-07-09 18:24:42.227383680 +0200 @@ -236,7 +236,7 @@ struct bp_target_info /* If this is a ranged breakpoint, then this field contains the @@ -1320,10 +1311,10 @@ Index: gdb-7.8.90.20150202/gdb/breakpoint.h /* Type of hardware watchpoint. */ enum target_hw_bp_type watchpoint_type; -Index: gdb-7.8.90.20150202/gdb/c-lang.c +Index: gdb-7.9.90.20150709/gdb/c-lang.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/c-lang.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/c-lang.c 2015-02-11 16:01:59.594966269 +0100 +--- gdb-7.9.90.20150709.orig/gdb/c-lang.c 2015-07-09 18:24:38.979355975 +0200 ++++ gdb-7.9.90.20150709/gdb/c-lang.c 2015-07-09 18:24:42.228383689 +0200 @@ -187,7 +187,7 @@ c_printchar (int c, struct type *type, s void @@ -1351,10 +1342,10 @@ Index: gdb-7.8.90.20150202/gdb/c-lang.c if (get_discrete_bounds (TYPE_INDEX_TYPE (expect_type), &low_bound, &high_bound) < 0) -Index: gdb-7.8.90.20150202/gdb/c-lang.h +Index: gdb-7.9.90.20150709/gdb/c-lang.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/c-lang.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/c-lang.h 2015-02-11 16:01:59.595966274 +0100 +--- gdb-7.9.90.20150709.orig/gdb/c-lang.h 2015-07-09 18:24:38.979355975 +0200 ++++ gdb-7.9.90.20150709/gdb/c-lang.h 2015-07-09 18:24:42.228383689 +0200 @@ -74,7 +74,7 @@ extern void c_print_typedef (struct type struct ui_file *); @@ -1390,10 +1381,10 @@ Index: gdb-7.8.90.20150202/gdb/c-lang.h struct ui_file *, int, const struct value *, const struct value_print_options *, -Index: gdb-7.8.90.20150202/gdb/c-valprint.c +Index: gdb-7.9.90.20150709/gdb/c-valprint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/c-valprint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/c-valprint.c 2015-02-11 16:01:59.595966274 +0100 +--- gdb-7.9.90.20150709.orig/gdb/c-valprint.c 2015-07-09 18:24:38.979355975 +0200 ++++ gdb-7.9.90.20150709/gdb/c-valprint.c 2015-07-09 18:24:42.228383689 +0200 @@ -132,7 +132,7 @@ static const struct generic_val_print_de void @@ -1435,11 +1426,11 @@ Index: gdb-7.8.90.20150202/gdb/c-valprint.c struct value_print_options opts = *options; opts.deref_ref = 1; -Index: gdb-7.8.90.20150202/gdb/cp-abi.c +Index: gdb-7.9.90.20150709/gdb/cp-abi.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/cp-abi.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/cp-abi.c 2015-02-11 16:01:59.595966274 +0100 -@@ -64,13 +64,13 @@ is_operator_name (const char *name) +--- gdb-7.9.90.20150709.orig/gdb/cp-abi.c 2015-07-09 18:24:38.980355983 +0200 ++++ gdb-7.9.90.20150709/gdb/cp-abi.c 2015-07-09 18:24:42.228383689 +0200 +@@ -64,12 +64,12 @@ is_operator_name (const char *name) return (*current_cp_abi.is_operator_name) (name); } @@ -1450,13 +1441,12 @@ Index: gdb-7.8.90.20150202/gdb/cp-abi.c + LONGEST embedded_offset, CORE_ADDR address, const struct value *val) { - volatile struct gdb_exception ex; - int res = 0; + LONGEST res = 0; gdb_assert (current_cp_abi.baseclass_offset != NULL); -@@ -94,7 +94,7 @@ baseclass_offset (struct type *type, int +@@ -96,7 +96,7 @@ baseclass_offset (struct type *type, int struct value * value_virtual_fn_field (struct value **arg1p, struct fn_field *f, int j, @@ -1465,7 +1455,7 @@ Index: gdb-7.8.90.20150202/gdb/cp-abi.c { if ((current_cp_abi.virtual_fn_field) == NULL) return NULL; -@@ -104,7 +104,7 @@ value_virtual_fn_field (struct value **a +@@ -106,7 +106,7 @@ value_virtual_fn_field (struct value **a struct type * value_rtti_type (struct value *v, int *full, @@ -1473,11 +1463,11 @@ Index: gdb-7.8.90.20150202/gdb/cp-abi.c + LONGEST *top, int *using_enc) { struct type *ret = NULL; - volatile struct gdb_exception e; -Index: gdb-7.8.90.20150202/gdb/cp-abi.h + +Index: gdb-7.9.90.20150709/gdb/cp-abi.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/cp-abi.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/cp-abi.h 2015-02-11 16:01:59.595966274 +0100 +--- gdb-7.9.90.20150709.orig/gdb/cp-abi.h 2015-07-09 18:24:38.980355983 +0200 ++++ gdb-7.9.90.20150709/gdb/cp-abi.h 2015-07-09 18:24:42.229383698 +0200 @@ -108,7 +108,7 @@ extern struct value *value_virtual_fn_fi struct fn_field *f, int j, @@ -1532,10 +1522,10 @@ Index: gdb-7.8.90.20150202/gdb/cp-abi.h void (*print_method_ptr) (const gdb_byte *contents, struct type *type, struct ui_file *stream); -Index: gdb-7.8.90.20150202/gdb/cp-valprint.c +Index: gdb-7.9.90.20150709/gdb/cp-valprint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/cp-valprint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/cp-valprint.c 2015-02-11 16:01:59.596966279 +0100 +--- gdb-7.9.90.20150709.orig/gdb/cp-valprint.c 2015-07-09 18:24:38.980355983 +0200 ++++ gdb-7.9.90.20150709/gdb/cp-valprint.c 2015-07-09 18:24:42.229383698 +0200 @@ -80,7 +80,7 @@ static void cp_print_static_field (struc const struct value_print_options *); @@ -1554,7 +1544,7 @@ Index: gdb-7.8.90.20150202/gdb/cp-valprint.c CORE_ADDR address, struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options, -@@ -331,7 +331,7 @@ cp_print_value_fields (struct type *type +@@ -334,7 +334,7 @@ cp_print_value_fields (struct type *type } else if (i == vptr_fieldno && type == vptr_basetype) { @@ -1563,7 +1553,7 @@ Index: gdb-7.8.90.20150202/gdb/cp-valprint.c struct type *i_type = TYPE_FIELD_TYPE (type, i); if (valprint_check_validity (stream, i_type, i_offset, val)) -@@ -414,7 +414,7 @@ cp_print_value_fields (struct type *type +@@ -417,7 +417,7 @@ cp_print_value_fields (struct type *type void cp_print_value_fields_rtti (struct type *type, @@ -1572,7 +1562,7 @@ Index: gdb-7.8.90.20150202/gdb/cp-valprint.c CORE_ADDR address, struct ui_file *stream, int recurse, const struct value *val, -@@ -431,7 +431,8 @@ cp_print_value_fields_rtti (struct type +@@ -434,7 +434,8 @@ cp_print_value_fields_rtti (struct type TARGET_CHAR_BIT * TYPE_LENGTH (type))) { struct value *value; @@ -1582,7 +1572,7 @@ Index: gdb-7.8.90.20150202/gdb/cp-valprint.c /* Ugh, we have to convert back to a value here. */ value = value_from_contents_and_address (type, valaddr + offset, -@@ -456,7 +457,7 @@ cp_print_value_fields_rtti (struct type +@@ -459,7 +460,7 @@ cp_print_value_fields_rtti (struct type static void cp_print_value (struct type *type, struct type *real_type, @@ -1591,7 +1581,7 @@ Index: gdb-7.8.90.20150202/gdb/cp-valprint.c CORE_ADDR address, struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options, -@@ -466,7 +467,7 @@ cp_print_value (struct type *type, struc +@@ -469,7 +470,7 @@ cp_print_value (struct type *type, struc = (struct type **) obstack_next_free (&dont_print_vb_obstack); struct obstack tmp_obstack = dont_print_vb_obstack; int i, n_baseclasses = TYPE_N_BASECLASSES (type); @@ -1600,19 +1590,19 @@ Index: gdb-7.8.90.20150202/gdb/cp-valprint.c struct type *thistype; if (dont_print_vb == 0) -@@ -480,7 +481,7 @@ cp_print_value (struct type *type, struc +@@ -483,7 +484,7 @@ cp_print_value (struct type *type, struc for (i = 0; i < n_baseclasses; i++) { - int boffset = 0; + LONGEST boffset = 0; - int skip; + int skip = 0; struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i)); const char *basename = TYPE_NAME (baseclass); -Index: gdb-7.8.90.20150202/gdb/d-lang.h +Index: gdb-7.9.90.20150709/gdb/d-lang.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/d-lang.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/d-lang.h 2015-02-11 16:01:59.596966279 +0100 +--- gdb-7.9.90.20150709.orig/gdb/d-lang.h 2015-07-09 18:24:38.981355992 +0200 ++++ gdb-7.9.90.20150709/gdb/d-lang.h 2015-07-09 18:24:42.229383698 +0200 @@ -71,7 +71,7 @@ extern const struct builtin_d_type *buil /* Defined in d-valprint.c */ @@ -1622,10 +1612,10 @@ Index: gdb-7.8.90.20150202/gdb/d-lang.h struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options); -Index: gdb-7.8.90.20150202/gdb/d-valprint.c +Index: gdb-7.9.90.20150709/gdb/d-valprint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/d-valprint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/d-valprint.c 2015-02-11 16:01:59.596966279 +0100 +--- gdb-7.9.90.20150709.orig/gdb/d-valprint.c 2015-07-09 18:24:38.981355992 +0200 ++++ gdb-7.9.90.20150709/gdb/d-valprint.c 2015-07-09 18:24:42.229383698 +0200 @@ -29,7 +29,7 @@ static int @@ -1648,10 +1638,10 @@ Index: gdb-7.8.90.20150202/gdb/d-valprint.c const struct value_print_options *options) { int ret; -Index: gdb-7.8.90.20150202/gdb/doublest.c +Index: gdb-7.9.90.20150709/gdb/doublest.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/doublest.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/doublest.c 2015-02-11 16:01:59.597966284 +0100 +--- gdb-7.9.90.20150709.orig/gdb/doublest.c 2015-07-09 18:24:38.981355992 +0200 ++++ gdb-7.9.90.20150709/gdb/doublest.c 2015-07-09 18:24:42.230383706 +0200 @@ -765,7 +765,7 @@ floatformat_from_doublest (const struct but not passed on by GDB. This should be fixed. */ @@ -1672,10 +1662,10 @@ Index: gdb-7.8.90.20150202/gdb/doublest.c return format; } -Index: gdb-7.8.90.20150202/gdb/dwarf2loc.c +Index: gdb-7.9.90.20150709/gdb/dwarf2loc.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/dwarf2loc.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/dwarf2loc.c 2015-02-11 16:01:59.598966289 +0100 +--- gdb-7.9.90.20150709.orig/gdb/dwarf2loc.c 2015-07-09 18:24:38.983356009 +0200 ++++ gdb-7.9.90.20150709/gdb/dwarf2loc.c 2015-07-09 18:24:42.231383715 +0200 @@ -1557,19 +1557,19 @@ insert_bits (unsigned int datum, BITS_BIG_ENDIAN is taken directly from gdbarch. */ @@ -1807,11 +1797,11 @@ Index: gdb-7.8.90.20150202/gdb/dwarf2loc.c if (byte_offset + TYPE_LENGTH (type) > n) invalid_synthetic_pointer (); -Index: gdb-7.8.90.20150202/gdb/dwarf2read.c +Index: gdb-7.9.90.20150709/gdb/dwarf2read.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/dwarf2read.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/dwarf2read.c 2015-02-11 16:01:59.603966315 +0100 -@@ -1894,12 +1894,12 @@ dwarf2_complex_location_expr_complaint ( +--- gdb-7.9.90.20150709.orig/gdb/dwarf2read.c 2015-07-09 18:24:38.989356060 +0200 ++++ gdb-7.9.90.20150709/gdb/dwarf2read.c 2015-07-09 18:24:42.236383757 +0200 +@@ -1910,12 +1910,12 @@ dwarf2_complex_location_expr_complaint ( } static void @@ -1828,7 +1818,7 @@ Index: gdb-7.8.90.20150202/gdb/dwarf2read.c } static void -@@ -12483,8 +12483,8 @@ dwarf2_add_field (struct field_info *fip +@@ -12524,8 +12524,8 @@ dwarf2_add_field (struct field_info *fip object, and then subtract off the number of bits of the field itself. The result is the bit offset of the LSB of the field. */ @@ -1839,11 +1829,11 @@ Index: gdb-7.8.90.20150202/gdb/dwarf2read.c attr = dwarf2_attr (die, DW_AT_byte_size, cu); if (attr) -Index: gdb-7.8.90.20150202/gdb/eval.c +Index: gdb-7.9.90.20150709/gdb/eval.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/eval.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/eval.c 2015-02-11 16:01:59.604966320 +0100 -@@ -314,7 +314,8 @@ evaluate_struct_tuple (struct value *str +--- gdb-7.9.90.20150709.orig/gdb/eval.c 2015-07-09 18:24:38.990356068 +0200 ++++ gdb-7.9.90.20150709/gdb/eval.c 2015-07-09 18:24:42.237383766 +0200 +@@ -317,7 +317,8 @@ evaluate_struct_tuple (struct value *str while (--nargs >= 0) { struct value *val = NULL; @@ -1853,7 +1843,7 @@ Index: gdb-7.8.90.20150202/gdb/eval.c bfd_byte *addr; fieldno++; -@@ -375,7 +376,7 @@ init_array_element (struct value *array, +@@ -378,7 +379,7 @@ init_array_element (struct value *array, enum noside noside, LONGEST low_bound, LONGEST high_bound) { LONGEST index; @@ -1862,7 +1852,7 @@ Index: gdb-7.8.90.20150202/gdb/eval.c if (exp->elts[*pos].opcode == BINOP_COMMA) { -@@ -522,11 +523,11 @@ binop_promote (const struct language_def +@@ -525,11 +526,11 @@ binop_promote (const struct language_def /* FIXME: Also mixed integral/booleans, with result an integer. */ { const struct builtin_type *builtin = builtin_type (gdbarch); @@ -1877,7 +1867,7 @@ Index: gdb-7.8.90.20150202/gdb/eval.c int unsigned_operation; /* Determine type length and signedness after promotion for -@@ -709,7 +710,7 @@ evaluate_subexp_standard (struct type *e +@@ -711,7 +712,7 @@ evaluate_subexp_standard (struct type *e struct value **argvec; int code; int ix; @@ -1886,7 +1876,7 @@ Index: gdb-7.8.90.20150202/gdb/eval.c struct type **arg_types; int save_pos1; struct symbol *function = NULL; -@@ -888,7 +889,7 @@ evaluate_subexp_standard (struct type *e +@@ -890,7 +891,7 @@ evaluate_subexp_standard (struct type *e struct type *range_type = TYPE_INDEX_TYPE (type); struct type *element_type = TYPE_TARGET_TYPE (type); struct value *array = allocate_value (expect_type); @@ -1895,7 +1885,7 @@ Index: gdb-7.8.90.20150202/gdb/eval.c LONGEST low_bound, high_bound, index; if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0) -@@ -1887,7 +1888,8 @@ evaluate_subexp_standard (struct type *e +@@ -1900,7 +1901,8 @@ evaluate_subexp_standard (struct type *e { struct type *type = value_type (arg1); struct type *real_type; @@ -1905,10 +1895,10 @@ Index: gdb-7.8.90.20150202/gdb/eval.c struct value_print_options opts; get_user_print_options (&opts); -Index: gdb-7.8.90.20150202/gdb/f-lang.c +Index: gdb-7.9.90.20150709/gdb/f-lang.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/f-lang.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/f-lang.c 2015-02-11 16:01:59.604966320 +0100 +--- gdb-7.9.90.20150709.orig/gdb/f-lang.c 2015-07-09 18:24:38.991356077 +0200 ++++ gdb-7.9.90.20150709/gdb/f-lang.c 2015-07-09 18:24:42.237383766 +0200 @@ -103,7 +103,7 @@ f_printchar (int c, struct type *type, s static void @@ -1918,10 +1908,10 @@ Index: gdb-7.8.90.20150202/gdb/f-lang.c const struct value_print_options *options) { const char *type_encoding = f_get_encoding (type); -Index: gdb-7.8.90.20150202/gdb/f-lang.h +Index: gdb-7.9.90.20150709/gdb/f-lang.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/f-lang.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/f-lang.h 2015-02-11 16:01:59.604966320 +0100 +--- gdb-7.9.90.20150709.orig/gdb/f-lang.h 2015-07-09 18:24:38.991356077 +0200 ++++ gdb-7.9.90.20150709/gdb/f-lang.h 2015-07-09 18:24:42.238383774 +0200 @@ -30,7 +30,7 @@ extern void f_error (char *); /* Defined extern void f_print_type (struct type *, const char *, struct ui_file *, int, int, const struct type_print_options *); @@ -1931,10 +1921,10 @@ Index: gdb-7.8.90.20150202/gdb/f-lang.h struct ui_file *, int, const struct value *, const struct value_print_options *); -Index: gdb-7.8.90.20150202/gdb/f-valprint.c +Index: gdb-7.9.90.20150709/gdb/f-valprint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/f-valprint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/f-valprint.c 2015-02-11 16:01:59.604966320 +0100 +--- gdb-7.9.90.20150709.orig/gdb/f-valprint.c 2015-07-09 18:24:38.991356077 +0200 ++++ gdb-7.9.90.20150709/gdb/f-valprint.c 2015-07-09 18:24:42.238383774 +0200 @@ -38,7 +38,7 @@ extern void _initialize_f_valprint (void static void info_common_command (char *, int); static void f77_get_dynamic_length_of_aggregate (struct type *); @@ -1994,10 +1984,10 @@ Index: gdb-7.8.90.20150202/gdb/f-valprint.c const struct value *original_value, const struct value_print_options *options) { -Index: gdb-7.8.90.20150202/gdb/findvar.c +Index: gdb-7.9.90.20150709/gdb/findvar.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/findvar.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/findvar.c 2015-02-11 16:01:59.605966325 +0100 +--- gdb-7.9.90.20150709.orig/gdb/findvar.c 2015-07-09 18:24:38.991356077 +0200 ++++ gdb-7.9.90.20150709/gdb/findvar.c 2015-07-09 18:24:42.238383774 +0200 @@ -626,7 +626,7 @@ struct value * default_value_from_register (struct gdbarch *gdbarch, struct type *type, int regnum, struct frame_id frame_id) @@ -2030,11 +2020,11 @@ Index: gdb-7.8.90.20150202/gdb/findvar.c /* If the register length is larger than the number of bytes remaining to copy, then only copy the appropriate bytes. */ -Index: gdb-7.8.90.20150202/gdb/frame.c +Index: gdb-7.9.90.20150709/gdb/frame.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/frame.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/frame.c 2015-02-11 16:01:59.605966325 +0100 -@@ -1269,7 +1269,7 @@ deprecated_frame_register_read (struct f +--- gdb-7.9.90.20150709.orig/gdb/frame.c 2015-07-09 18:24:38.992356085 +0200 ++++ gdb-7.9.90.20150709/gdb/frame.c 2015-07-09 18:24:42.239383783 +0200 +@@ -1272,7 +1272,7 @@ deprecated_frame_register_read (struct f int get_frame_register_bytes (struct frame_info *frame, int regnum, @@ -2043,7 +2033,7 @@ Index: gdb-7.8.90.20150202/gdb/frame.c int *optimizedp, int *unavailablep) { struct gdbarch *gdbarch = get_frame_arch (frame); -@@ -1298,7 +1298,7 @@ get_frame_register_bytes (struct frame_i +@@ -1301,7 +1301,7 @@ get_frame_register_bytes (struct frame_i } if (len > maxsize) error (_("Bad debug information detected: " @@ -2052,10 +2042,10 @@ Index: gdb-7.8.90.20150202/gdb/frame.c /* Copy the data. */ while (len > 0) -Index: gdb-7.8.90.20150202/gdb/frame.h +Index: gdb-7.9.90.20150709/gdb/frame.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/frame.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/frame.h 2015-02-11 16:01:59.606966330 +0100 +--- gdb-7.9.90.20150709.orig/gdb/frame.h 2015-07-09 18:24:38.992356085 +0200 ++++ gdb-7.9.90.20150709/gdb/frame.h 2015-07-09 18:24:42.239383783 +0200 @@ -583,7 +583,7 @@ extern void put_frame_register (struct f contents are optimized out or unavailable, set *OPTIMIZEDP, *UNAVAILABLEP accordingly. */ @@ -2065,11 +2055,11 @@ Index: gdb-7.8.90.20150202/gdb/frame.h gdb_byte *myaddr, int *optimizedp, int *unavailablep); -Index: gdb-7.8.90.20150202/gdb/gdbtypes.c +Index: gdb-7.9.90.20150709/gdb/gdbtypes.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/gdbtypes.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/gdbtypes.c 2015-02-11 16:01:59.607966335 +0100 -@@ -2478,7 +2478,7 @@ allocate_gnat_aux_type (struct type *typ +--- gdb-7.9.90.20150709.orig/gdb/gdbtypes.c 2015-07-09 18:24:38.995356111 +0200 ++++ gdb-7.9.90.20150709/gdb/gdbtypes.c 2015-07-09 18:24:42.241383800 +0200 +@@ -2698,7 +2698,7 @@ allocate_gnat_aux_type (struct type *typ least as long as OBJFILE. */ struct type * @@ -2078,7 +2068,7 @@ Index: gdb-7.8.90.20150202/gdb/gdbtypes.c const char *name, struct objfile *objfile) { struct type *type; -@@ -2718,8 +2718,8 @@ is_public_ancestor (struct type *base, s +@@ -2938,8 +2938,8 @@ is_public_ancestor (struct type *base, s static int is_unique_ancestor_worker (struct type *base, struct type *dclass, @@ -2089,7 +2079,7 @@ Index: gdb-7.8.90.20150202/gdb/gdbtypes.c CORE_ADDR address, struct value *val) { int i, count = 0; -@@ -2730,7 +2730,7 @@ is_unique_ancestor_worker (struct type * +@@ -2950,7 +2950,7 @@ is_unique_ancestor_worker (struct type * for (i = 0; i < TYPE_N_BASECLASSES (dclass) && count < 2; ++i) { struct type *iter; @@ -2098,7 +2088,7 @@ Index: gdb-7.8.90.20150202/gdb/gdbtypes.c iter = check_typedef (TYPE_BASECLASS (dclass, i)); -@@ -2771,7 +2771,7 @@ is_unique_ancestor_worker (struct type * +@@ -2991,7 +2991,7 @@ is_unique_ancestor_worker (struct type * int is_unique_ancestor (struct type *base, struct value *val) { @@ -2107,7 +2097,7 @@ Index: gdb-7.8.90.20150202/gdb/gdbtypes.c return is_unique_ancestor_worker (base, value_type (val), &offset, value_contents_for_printing (val), -@@ -3916,7 +3916,7 @@ recursive_dump_type (struct type *type, +@@ -4156,7 +4156,7 @@ recursive_dump_type (struct type *type, break; } puts_filtered ("\n"); @@ -2116,7 +2106,7 @@ Index: gdb-7.8.90.20150202/gdb/gdbtypes.c if (TYPE_OBJFILE_OWNED (type)) { printfi_filtered (spaces, "objfile "); -@@ -4040,8 +4040,8 @@ recursive_dump_type (struct type *type, +@@ -4284,8 +4284,8 @@ recursive_dump_type (struct type *type, idx, plongest (TYPE_FIELD_ENUMVAL (type, idx))); else printfi_filtered (spaces + 2, @@ -2127,7 +2117,7 @@ Index: gdb-7.8.90.20150202/gdb/gdbtypes.c TYPE_FIELD_BITSIZE (type, idx)); gdb_print_host_address (TYPE_FIELD_TYPE (type, idx), gdb_stdout); printf_filtered (" name '%s' (", -@@ -4398,7 +4398,7 @@ copy_type (const struct type *type) +@@ -4666,7 +4666,7 @@ copy_type (const struct type *type) struct type * arch_type (struct gdbarch *gdbarch, @@ -2136,20 +2126,20 @@ Index: gdb-7.8.90.20150202/gdb/gdbtypes.c { struct type *type; -Index: gdb-7.8.90.20150202/gdb/gdbtypes.h +Index: gdb-7.9.90.20150709/gdb/gdbtypes.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/gdbtypes.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/gdbtypes.h 2015-02-11 16:01:59.608966340 +0100 -@@ -598,7 +598,7 @@ struct main_type - gdbarch_bits_big_endian=0 targets, it is the bit offset to - the LSB. */ +--- gdb-7.9.90.20150709.orig/gdb/gdbtypes.h 2015-07-09 18:24:38.995356111 +0200 ++++ gdb-7.9.90.20150709/gdb/gdbtypes.h 2015-07-09 18:24:42.241383800 +0200 +@@ -504,7 +504,7 @@ union field_location + gdbarch_bits_big_endian=0 targets, it is the bit offset to + the LSB. */ -- int bitpos; -+ LONGEST bitpos; +- int bitpos; ++ LONGEST bitpos; - /* * Enum value. */ - LONGEST enumval; -@@ -801,7 +801,7 @@ struct type + /* * Enum value. */ + LONGEST enumval; +@@ -822,7 +822,7 @@ struct type HOST_CHAR_BIT. However, this would still fail to address machines based on a ternary or decimal representation. */ @@ -2158,7 +2148,7 @@ Index: gdb-7.8.90.20150202/gdb/gdbtypes.h /* * Core type, shared by a group of qualified types. */ -@@ -1641,11 +1641,12 @@ extern struct type *get_target_type (str +@@ -1708,11 +1708,12 @@ extern struct type *get_target_type (str /* * Helper function to construct objfile-owned types. */ @@ -2173,10 +2163,10 @@ Index: gdb-7.8.90.20150202/gdb/gdbtypes.h extern struct type *arch_integer_type (struct gdbarch *, int, int, char *); extern struct type *arch_character_type (struct gdbarch *, int, int, char *); extern struct type *arch_boolean_type (struct gdbarch *, int, int, char *); -Index: gdb-7.8.90.20150202/gdb/gnu-v2-abi.c +Index: gdb-7.9.90.20150709/gdb/gnu-v2-abi.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/gnu-v2-abi.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/gnu-v2-abi.c 2015-02-11 16:01:59.608966340 +0100 +--- gdb-7.9.90.20150709.orig/gdb/gnu-v2-abi.c 2015-07-09 18:24:38.996356120 +0200 ++++ gdb-7.9.90.20150709/gdb/gnu-v2-abi.c 2015-07-09 18:24:42.241383800 +0200 @@ -82,7 +82,7 @@ gnuv2_is_operator_name (const char *name TYPE is the type in which F is located. */ static struct value * @@ -2228,10 +2218,10 @@ Index: gdb-7.8.90.20150202/gdb/gnu-v2-abi.c gnuv2_baseclass_offset (type, i, valaddr, embedded_offset, address, val); -Index: gdb-7.8.90.20150202/gdb/gnu-v3-abi.c +Index: gdb-7.9.90.20150709/gdb/gnu-v3-abi.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/gnu-v3-abi.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/gnu-v3-abi.c 2015-02-11 16:01:59.608966340 +0100 +--- gdb-7.9.90.20150709.orig/gdb/gnu-v3-abi.c 2015-07-09 18:24:38.996356120 +0200 ++++ gdb-7.9.90.20150709/gdb/gnu-v3-abi.c 2015-07-09 18:24:42.242383808 +0200 @@ -108,7 +108,7 @@ build_gdb_vtable_type (struct gdbarch *a { struct type *t; @@ -2250,7 +2240,7 @@ Index: gdb-7.8.90.20150202/gdb/gnu-v3-abi.c vtable_address_point_offset (struct gdbarch *gdbarch) { struct type *vtable_type = gdbarch_data (gdbarch, vtable_type_gdbarch_data); -@@ -275,7 +275,7 @@ gnuv3_get_vtable (struct gdbarch *gdbarc +@@ -285,7 +285,7 @@ gnuv3_get_vtable (struct gdbarch *gdbarc static struct type * gnuv3_rtti_type (struct value *value, @@ -2259,7 +2249,7 @@ Index: gdb-7.8.90.20150202/gdb/gnu-v3-abi.c { struct gdbarch *gdbarch; struct type *values_type = check_typedef (value_type (value)); -@@ -400,7 +400,7 @@ gnuv3_get_virtual_fn (struct gdbarch *gd +@@ -410,7 +410,7 @@ gnuv3_get_virtual_fn (struct gdbarch *gd static struct value * gnuv3_virtual_fn_field (struct value **value_p, struct fn_field *f, int j, @@ -2268,7 +2258,7 @@ Index: gdb-7.8.90.20150202/gdb/gnu-v3-abi.c { struct type *values_type = check_typedef (value_type (*value_p)); struct gdbarch *gdbarch; -@@ -430,16 +430,16 @@ gnuv3_virtual_fn_field (struct value **v +@@ -440,16 +440,16 @@ gnuv3_virtual_fn_field (struct value **v -1 is returned on error. */ @@ -2288,7 +2278,7 @@ Index: gdb-7.8.90.20150202/gdb/gnu-v3-abi.c /* Determine architecture. */ gdbarch = get_type_arch (type); -@@ -463,7 +463,7 @@ gnuv3_baseclass_offset (struct type *typ +@@ -473,7 +473,7 @@ gnuv3_baseclass_offset (struct type *typ cur_base_offset = cur_base_offset + vtable_address_point_offset (gdbarch); if ((- cur_base_offset) % TYPE_LENGTH (ptr_type) != 0) error (_("Misaligned vbase offset.")); @@ -2297,7 +2287,7 @@ Index: gdb-7.8.90.20150202/gdb/gnu-v3-abi.c vtable = gnuv3_get_vtable (gdbarch, type, address + embedded_offset); gdb_assert (vtable != NULL); -@@ -507,7 +507,7 @@ gnuv3_find_method_in (struct type *domai +@@ -517,7 +517,7 @@ gnuv3_find_method_in (struct type *domai we're out of luck. */ for (i = 0; i < TYPE_N_BASECLASSES (domain); i++) { @@ -2306,10 +2296,10 @@ Index: gdb-7.8.90.20150202/gdb/gnu-v3-abi.c struct type *basetype; if (BASETYPE_VIA_VIRTUAL (domain, i)) -Index: gdb-7.8.90.20150202/gdb/go-lang.h +Index: gdb-7.9.90.20150709/gdb/go-lang.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/go-lang.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/go-lang.h 2015-02-11 16:01:59.608966340 +0100 +--- gdb-7.9.90.20150709.orig/gdb/go-lang.h 2015-07-09 18:24:38.997356128 +0200 ++++ gdb-7.9.90.20150709/gdb/go-lang.h 2015-07-09 18:24:42.242383808 +0200 @@ -85,7 +85,7 @@ extern void go_print_type (struct type * /* Defined in go-valprint.c. */ @@ -2319,10 +2309,10 @@ Index: gdb-7.8.90.20150202/gdb/go-lang.h struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options); -Index: gdb-7.8.90.20150202/gdb/go-valprint.c +Index: gdb-7.9.90.20150709/gdb/go-valprint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/go-valprint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/go-valprint.c 2015-02-11 16:01:59.609966345 +0100 +--- gdb-7.9.90.20150709.orig/gdb/go-valprint.c 2015-07-09 18:24:38.997356128 +0200 ++++ gdb-7.9.90.20150709/gdb/go-valprint.c 2015-07-09 18:24:42.242383808 +0200 @@ -37,7 +37,7 @@ static void @@ -2345,23 +2335,10 @@ Index: gdb-7.8.90.20150202/gdb/go-valprint.c const struct value_print_options *options) { CHECK_TYPEDEF (type); -Index: gdb-7.8.90.20150202/gdb/inf-ttrace.c +Index: gdb-7.9.90.20150709/gdb/jv-lang.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/inf-ttrace.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/inf-ttrace.c 2015-02-11 16:01:59.609966345 +0100 -@@ -366,7 +366,7 @@ inf_ttrace_can_use_hw_breakpoint (struct - - static int - inf_ttrace_region_ok_for_hw_watchpoint (struct target_ops *self, -- CORE_ADDR addr, int len) -+ CORE_ADDR addr, LONGEST len) - { - return 1; - } -Index: gdb-7.8.90.20150202/gdb/jv-lang.c -=================================================================== ---- gdb-7.8.90.20150202.orig/gdb/jv-lang.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/jv-lang.c 2015-02-11 16:01:59.609966345 +0100 +--- gdb-7.9.90.20150709.orig/gdb/jv-lang.c 2015-07-09 18:24:38.997356128 +0200 ++++ gdb-7.9.90.20150709/gdb/jv-lang.c 2015-07-09 18:24:42.243383817 +0200 @@ -436,7 +436,7 @@ java_link_class_type (struct gdbarch *gd for (i = TYPE_N_BASECLASSES (type); i < nfields; i++) { @@ -2380,10 +2357,10 @@ Index: gdb-7.8.90.20150202/gdb/jv-lang.c const struct value_print_options *options) { const char *type_encoding = java_get_encoding (type); -Index: gdb-7.8.90.20150202/gdb/jv-lang.h +Index: gdb-7.9.90.20150709/gdb/jv-lang.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/jv-lang.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/jv-lang.h 2015-02-11 16:01:59.610966350 +0100 +--- gdb-7.9.90.20150709.orig/gdb/jv-lang.h 2015-07-09 18:24:38.997356128 +0200 ++++ gdb-7.9.90.20150709/gdb/jv-lang.h 2015-07-09 18:24:42.243383817 +0200 @@ -43,8 +43,8 @@ struct builtin_java_type extern const struct builtin_java_type *builtin_java_type (struct gdbarch *); @@ -2395,10 +2372,10 @@ Index: gdb-7.8.90.20150202/gdb/jv-lang.h const struct value *, const struct value_print_options *); -Index: gdb-7.8.90.20150202/gdb/jv-valprint.c +Index: gdb-7.9.90.20150709/gdb/jv-valprint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/jv-valprint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/jv-valprint.c 2015-02-11 16:01:59.610966350 +0100 +--- gdb-7.9.90.20150709.orig/gdb/jv-valprint.c 2015-07-09 18:24:38.998356137 +0200 ++++ gdb-7.9.90.20150709/gdb/jv-valprint.c 2015-07-09 18:24:42.243383817 +0200 @@ -265,7 +265,7 @@ java_value_print (struct value *val, str static void @@ -2417,10 +2394,10 @@ Index: gdb-7.8.90.20150202/gdb/jv-valprint.c struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options) -Index: gdb-7.8.90.20150202/gdb/language.c +Index: gdb-7.9.90.20150709/gdb/language.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/language.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/language.c 2015-02-11 16:01:59.610966350 +0100 +--- gdb-7.9.90.20150709.orig/gdb/language.c 2015-07-09 18:24:38.998356137 +0200 ++++ gdb-7.9.90.20150709/gdb/language.c 2015-07-09 18:24:42.244383825 +0200 @@ -720,7 +720,7 @@ unk_lang_printchar (int c, struct type * static void @@ -2439,10 +2416,10 @@ Index: gdb-7.8.90.20150202/gdb/language.c struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options) -Index: gdb-7.8.90.20150202/gdb/language.h +Index: gdb-7.9.90.20150709/gdb/language.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/language.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/language.h 2015-02-11 16:01:59.611966355 +0100 +--- gdb-7.9.90.20150709.orig/gdb/language.h 2015-07-09 18:24:38.998356137 +0200 ++++ gdb-7.9.90.20150709/gdb/language.h 2015-07-09 18:24:42.244383825 +0200 @@ -189,7 +189,7 @@ struct language_defn struct ui_file * stream); @@ -2461,10 +2438,10 @@ Index: gdb-7.8.90.20150202/gdb/language.h struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options); -Index: gdb-7.8.90.20150202/gdb/m2-lang.c +Index: gdb-7.9.90.20150709/gdb/m2-lang.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/m2-lang.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/m2-lang.c 2015-02-11 16:01:59.611966355 +0100 +--- gdb-7.9.90.20150709.orig/gdb/m2-lang.c 2015-07-09 18:24:38.999356145 +0200 ++++ gdb-7.9.90.20150709/gdb/m2-lang.c 2015-07-09 18:24:42.244383825 +0200 @@ -104,10 +104,10 @@ m2_printchar (int c, struct type *type, static void @@ -2499,10 +2476,10 @@ Index: gdb-7.8.90.20150202/gdb/m2-lang.c i = rep1 - 1; things_printed += options->repeat_count_threshold; need_comma = 1; -Index: gdb-7.8.90.20150202/gdb/m2-lang.h +Index: gdb-7.9.90.20150709/gdb/m2-lang.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/m2-lang.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/m2-lang.h 2015-02-11 16:01:59.611966355 +0100 +--- gdb-7.9.90.20150709.orig/gdb/m2-lang.h 2015-07-09 18:24:38.999356145 +0200 ++++ gdb-7.9.90.20150709/gdb/m2-lang.h 2015-07-09 18:24:42.244383825 +0200 @@ -34,7 +34,7 @@ extern void m2_print_typedef (struct typ extern int m2_is_long_set (struct type *type); extern int m2_is_unbounded_array (struct type *type); @@ -2512,11 +2489,11 @@ Index: gdb-7.8.90.20150202/gdb/m2-lang.h struct ui_file *, int, const struct value *, const struct value_print_options *); -Index: gdb-7.8.90.20150202/gdb/m2-typeprint.c +Index: gdb-7.9.90.20150709/gdb/m2-typeprint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/m2-typeprint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/m2-typeprint.c 2015-02-11 16:01:59.611966355 +0100 -@@ -230,9 +230,12 @@ static void m2_array (struct type *type, +--- gdb-7.9.90.20150709.orig/gdb/m2-typeprint.c 2015-07-09 18:24:38.999356145 +0200 ++++ gdb-7.9.90.20150709/gdb/m2-typeprint.c 2015-07-09 18:24:42.245383834 +0200 +@@ -234,9 +234,12 @@ static void m2_array (struct type *type, m2_print_bounds (TYPE_INDEX_TYPE (type), stream, show, -1, 1); } else @@ -2532,10 +2509,10 @@ Index: gdb-7.8.90.20150202/gdb/m2-typeprint.c } fprintf_filtered (stream, "] OF "); m2_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level, flags); -Index: gdb-7.8.90.20150202/gdb/m2-valprint.c +Index: gdb-7.9.90.20150709/gdb/m2-valprint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/m2-valprint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/m2-valprint.c 2015-02-11 16:01:59.612966360 +0100 +--- gdb-7.9.90.20150709.orig/gdb/m2-valprint.c 2015-07-09 18:24:38.999356145 +0200 ++++ gdb-7.9.90.20150709/gdb/m2-valprint.c 2015-07-09 18:24:42.245383834 +0200 @@ -35,7 +35,7 @@ static int print_unpacked_pointer (struc struct ui_file *stream); static void @@ -2601,10 +2578,10 @@ Index: gdb-7.8.90.20150202/gdb/m2-valprint.c /* Look for a NULL char. */ for (temp_len = 0; -Index: gdb-7.8.90.20150202/gdb/memrange.c +Index: gdb-7.9.90.20150709/gdb/memrange.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/memrange.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/memrange.c 2015-02-11 16:01:59.612966360 +0100 +--- gdb-7.9.90.20150709.orig/gdb/memrange.c 2015-07-09 18:24:38.999356145 +0200 ++++ gdb-7.9.90.20150709/gdb/memrange.c 2015-07-09 18:24:42.245383834 +0200 @@ -21,8 +21,8 @@ #include "memrange.h" @@ -2616,10 +2593,10 @@ Index: gdb-7.8.90.20150202/gdb/memrange.c { ULONGEST h, l; -Index: gdb-7.8.90.20150202/gdb/memrange.h +Index: gdb-7.9.90.20150709/gdb/memrange.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/memrange.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/memrange.h 2015-02-11 16:01:59.612966360 +0100 +--- gdb-7.9.90.20150709.orig/gdb/memrange.h 2015-07-09 18:24:39.000356154 +0200 ++++ gdb-7.9.90.20150709/gdb/memrange.h 2015-07-09 18:24:42.245383834 +0200 @@ -30,7 +30,7 @@ struct mem_range CORE_ADDR start; @@ -2640,10 +2617,10 @@ Index: gdb-7.8.90.20150202/gdb/memrange.h /* Returns true if ADDR is in RANGE. */ -Index: gdb-7.8.90.20150202/gdb/mips-linux-nat.c +Index: gdb-7.9.90.20150709/gdb/mips-linux-nat.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/mips-linux-nat.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/mips-linux-nat.c 2015-02-11 16:01:59.612966360 +0100 +--- gdb-7.9.90.20150709.orig/gdb/mips-linux-nat.c 2015-07-09 18:24:39.000356154 +0200 ++++ gdb-7.9.90.20150709/gdb/mips-linux-nat.c 2015-07-09 18:24:42.245383834 +0200 @@ -586,7 +586,7 @@ mips_linux_stopped_data_address (struct static int @@ -2653,10 +2630,10 @@ Index: gdb-7.8.90.20150202/gdb/mips-linux-nat.c { struct pt_watch_regs dummy_regs; int i; -Index: gdb-7.8.90.20150202/gdb/opencl-lang.c +Index: gdb-7.9.90.20150709/gdb/opencl-lang.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/opencl-lang.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/opencl-lang.c 2015-02-11 16:01:59.613966365 +0100 +--- gdb-7.9.90.20150709.orig/gdb/opencl-lang.c 2015-07-09 18:24:39.000356154 +0200 ++++ gdb-7.9.90.20150709/gdb/opencl-lang.c 2015-07-09 18:24:42.246383843 +0200 @@ -78,11 +78,11 @@ builtin_opencl_type (struct gdbarch *gdb static struct type * @@ -2733,10 +2710,10 @@ Index: gdb-7.8.90.20150202/gdb/opencl-lang.c if (!value_bits_synthetic_pointer (c->val, c->indices[i] * elsize + comp_offset, -Index: gdb-7.8.90.20150202/gdb/p-lang.c +Index: gdb-7.9.90.20150709/gdb/p-lang.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/p-lang.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/p-lang.c 2015-02-11 16:01:59.613966365 +0100 +--- gdb-7.9.90.20150709.orig/gdb/p-lang.c 2015-07-09 18:24:39.001356162 +0200 ++++ gdb-7.9.90.20150709/gdb/p-lang.c 2015-07-09 18:24:42.246383843 +0200 @@ -95,8 +95,8 @@ pascal_main_name (void) are not multiple of TARGET_CHAR_BIT then the results are wrong but this does not happen for Free Pascal nor for GPC. */ @@ -2784,10 +2761,10 @@ Index: gdb-7.8.90.20150202/gdb/p-lang.c i = rep1 - 1; things_printed += options->repeat_count_threshold; need_comma = 1; -Index: gdb-7.8.90.20150202/gdb/p-lang.h +Index: gdb-7.9.90.20150709/gdb/p-lang.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/p-lang.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/p-lang.h 2015-02-11 16:01:59.613966365 +0100 +--- gdb-7.9.90.20150709.orig/gdb/p-lang.h 2015-07-09 18:24:39.001356162 +0200 ++++ gdb-7.9.90.20150709/gdb/p-lang.h 2015-07-09 18:24:42.246383843 +0200 @@ -36,7 +36,7 @@ extern void pascal_print_type (struct ty extern void pascal_print_typedef (struct type *, struct symbol *, struct ui_file *); @@ -2822,10 +2799,10 @@ Index: gdb-7.8.90.20150202/gdb/p-lang.h CORE_ADDR, struct ui_file *, int, const struct value *, -Index: gdb-7.8.90.20150202/gdb/p-valprint.c +Index: gdb-7.9.90.20150709/gdb/p-valprint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/p-valprint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/p-valprint.c 2015-02-11 16:01:59.613966365 +0100 +--- gdb-7.9.90.20150709.orig/gdb/p-valprint.c 2015-07-09 18:24:39.001356162 +0200 ++++ gdb-7.9.90.20150709/gdb/p-valprint.c 2015-07-09 18:24:42.247383851 +0200 @@ -57,7 +57,7 @@ static const struct generic_val_print_de void @@ -2884,14 +2861,14 @@ Index: gdb-7.8.90.20150202/gdb/p-valprint.c const gdb_byte *base_valaddr = NULL; - int thisoffset; + LONGEST thisoffset; - volatile struct gdb_exception ex; int skip = 0; -Index: gdb-7.8.90.20150202/gdb/ppc-linux-nat.c + if (BASETYPE_VIA_VIRTUAL (type, i)) +Index: gdb-7.9.90.20150709/gdb/ppc-linux-nat.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/ppc-linux-nat.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/ppc-linux-nat.c 2015-02-11 16:01:59.614966371 +0100 -@@ -1501,7 +1501,7 @@ ppc_linux_can_use_hw_breakpoint (struct +--- gdb-7.9.90.20150709.orig/gdb/ppc-linux-nat.c 2015-07-09 18:24:39.002356171 +0200 ++++ gdb-7.9.90.20150709/gdb/ppc-linux-nat.c 2015-07-09 18:24:42.247383851 +0200 +@@ -1449,7 +1449,7 @@ ppc_linux_can_use_hw_breakpoint (struct static int ppc_linux_region_ok_for_hw_watchpoint (struct target_ops *self, @@ -2900,11 +2877,11 @@ Index: gdb-7.8.90.20150202/gdb/ppc-linux-nat.c { /* Handle sub-8-byte quantities. */ if (len <= 0) -Index: gdb-7.8.90.20150202/gdb/printcmd.c +Index: gdb-7.9.90.20150709/gdb/printcmd.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/printcmd.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/printcmd.c 2015-02-11 16:01:59.615966375 +0100 -@@ -285,7 +285,7 @@ print_formatted (struct value *val, int +--- gdb-7.9.90.20150709.orig/gdb/printcmd.c 2015-07-09 18:24:39.003356179 +0200 ++++ gdb-7.9.90.20150709/gdb/printcmd.c 2015-07-09 18:24:42.248383860 +0200 +@@ -274,7 +274,7 @@ print_formatted (struct value *val, int struct ui_file *stream) { struct type *type = check_typedef (value_type (val)); @@ -2913,7 +2890,7 @@ Index: gdb-7.8.90.20150202/gdb/printcmd.c if (VALUE_LVAL (val) == lval_memory) next_address = value_address (val) + len; -@@ -363,7 +363,7 @@ print_scalar_formatted (const void *vala +@@ -352,7 +352,7 @@ print_scalar_formatted (const void *vala { struct gdbarch *gdbarch = get_type_arch (type); LONGEST val_long = 0; @@ -2922,10 +2899,10 @@ Index: gdb-7.8.90.20150202/gdb/printcmd.c enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); /* String printing should go through val_print_scalar_formatted. */ -Index: gdb-7.8.90.20150202/gdb/procfs.c +Index: gdb-7.9.90.20150709/gdb/procfs.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/procfs.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/procfs.c 2015-02-11 16:01:59.616966381 +0100 +--- gdb-7.9.90.20150709.orig/gdb/procfs.c 2015-07-09 18:24:39.004356188 +0200 ++++ gdb-7.9.90.20150709/gdb/procfs.c 2015-07-09 18:24:42.249383868 +0200 @@ -4859,7 +4859,7 @@ procfs_remove_watchpoint (struct target_ static int @@ -2935,11 +2912,11 @@ Index: gdb-7.8.90.20150202/gdb/procfs.c { /* The man page for proc(4) on Solaris 2.6 and up says that the system can support "thousands" of hardware watchpoints, but gives -Index: gdb-7.8.90.20150202/gdb/python/py-prettyprint.c +Index: gdb-7.9.90.20150709/gdb/python/py-prettyprint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/python/py-prettyprint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/python/py-prettyprint.c 2015-02-11 16:01:59.616966381 +0100 -@@ -686,7 +686,7 @@ print_children (PyObject *printer, const +--- gdb-7.9.90.20150709.orig/gdb/python/py-prettyprint.c 2015-07-09 18:24:39.004356188 +0200 ++++ gdb-7.9.90.20150709/gdb/python/py-prettyprint.c 2015-07-09 18:24:42.249383868 +0200 +@@ -703,7 +703,7 @@ print_children (PyObject *printer, const enum ext_lang_rc gdbpy_apply_val_pretty_printer (const struct extension_language_defn *extlang, struct type *type, const gdb_byte *valaddr, @@ -2948,11 +2925,11 @@ Index: gdb-7.8.90.20150202/gdb/python/py-prettyprint.c struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options, -Index: gdb-7.8.90.20150202/gdb/regcache.c +Index: gdb-7.9.90.20150709/gdb/regcache.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/regcache.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/regcache.c 2015-02-11 16:01:59.616966381 +0100 -@@ -941,7 +941,7 @@ typedef void (regcache_write_ftype) (str +--- gdb-7.9.90.20150709.orig/gdb/regcache.c 2015-07-09 18:24:39.005356196 +0200 ++++ gdb-7.9.90.20150709/gdb/regcache.c 2015-07-09 18:24:42.250383877 +0200 +@@ -949,7 +949,7 @@ typedef void (regcache_write_ftype) (str static enum register_status regcache_xfer_part (struct regcache *regcache, int regnum, @@ -2961,7 +2938,7 @@ Index: gdb-7.8.90.20150202/gdb/regcache.c enum register_status (*read) (struct regcache *regcache, int regnum, gdb_byte *buf), -@@ -985,7 +985,7 @@ regcache_xfer_part (struct regcache *reg +@@ -993,7 +993,7 @@ regcache_xfer_part (struct regcache *reg enum register_status regcache_raw_read_part (struct regcache *regcache, int regnum, @@ -2970,7 +2947,7 @@ Index: gdb-7.8.90.20150202/gdb/regcache.c { struct regcache_descr *descr = regcache->descr; -@@ -996,7 +996,7 @@ regcache_raw_read_part (struct regcache +@@ -1004,7 +1004,7 @@ regcache_raw_read_part (struct regcache void regcache_raw_write_part (struct regcache *regcache, int regnum, @@ -2979,7 +2956,7 @@ Index: gdb-7.8.90.20150202/gdb/regcache.c { struct regcache_descr *descr = regcache->descr; -@@ -1007,7 +1007,7 @@ regcache_raw_write_part (struct regcache +@@ -1015,7 +1015,7 @@ regcache_raw_write_part (struct regcache enum register_status regcache_cooked_read_part (struct regcache *regcache, int regnum, @@ -2988,7 +2965,7 @@ Index: gdb-7.8.90.20150202/gdb/regcache.c { struct regcache_descr *descr = regcache->descr; -@@ -1018,7 +1018,7 @@ regcache_cooked_read_part (struct regcac +@@ -1026,7 +1026,7 @@ regcache_cooked_read_part (struct regcac void regcache_cooked_write_part (struct regcache *regcache, int regnum, @@ -2997,10 +2974,10 @@ Index: gdb-7.8.90.20150202/gdb/regcache.c { struct regcache_descr *descr = regcache->descr; -Index: gdb-7.8.90.20150202/gdb/regcache.h +Index: gdb-7.9.90.20150709/gdb/regcache.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/regcache.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/regcache.h 2015-02-11 16:01:59.617966386 +0100 +--- gdb-7.9.90.20150709.orig/gdb/regcache.h 2015-07-09 18:24:39.005356196 +0200 ++++ gdb-7.9.90.20150709/gdb/regcache.h 2015-07-09 18:24:42.250383877 +0200 @@ -92,9 +92,9 @@ extern void regcache_raw_write_unsigned extern enum register_status @@ -3028,11 +3005,11 @@ Index: gdb-7.8.90.20150202/gdb/regcache.h /* Special routines to read/write the PC. */ -Index: gdb-7.8.90.20150202/gdb/remote.c +Index: gdb-7.9.90.20150709/gdb/remote.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/remote.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/remote.c 2015-02-11 16:01:59.619966396 +0100 -@@ -8371,7 +8371,7 @@ int remote_hw_breakpoint_limit = -1; +--- gdb-7.9.90.20150709.orig/gdb/remote.c 2015-07-09 18:24:39.007356213 +0200 ++++ gdb-7.9.90.20150709/gdb/remote.c 2015-07-09 18:24:42.253383902 +0200 +@@ -8796,7 +8796,7 @@ int remote_hw_breakpoint_limit = -1; static int remote_region_ok_for_hw_watchpoint (struct target_ops *self, @@ -3041,10 +3018,10 @@ Index: gdb-7.8.90.20150202/gdb/remote.c { if (remote_hw_watchpoint_length_limit == 0) return 0; -Index: gdb-7.8.90.20150202/gdb/spu-multiarch.c +Index: gdb-7.9.90.20150709/gdb/spu-multiarch.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/spu-multiarch.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/spu-multiarch.c 2015-02-11 16:01:59.619966396 +0100 +--- gdb-7.9.90.20150709.orig/gdb/spu-multiarch.c 2015-07-09 18:24:39.008356222 +0200 ++++ gdb-7.9.90.20150709/gdb/spu-multiarch.c 2015-07-09 18:24:42.253383902 +0200 @@ -117,7 +117,7 @@ spu_thread_architecture (struct target_o /* Override the to_region_ok_for_hw_watchpoint routine. */ static int @@ -3054,11 +3031,11 @@ Index: gdb-7.8.90.20150202/gdb/spu-multiarch.c { struct target_ops *ops_beneath = find_target_beneath (self); -Index: gdb-7.8.90.20150202/gdb/stack.c +Index: gdb-7.9.90.20150709/gdb/stack.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/stack.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/stack.c 2015-02-11 16:01:59.620966401 +0100 -@@ -175,7 +175,7 @@ print_stack_frame (struct frame_info *fr +--- gdb-7.9.90.20150709.orig/gdb/stack.c 2015-07-09 18:24:39.009356230 +0200 ++++ gdb-7.9.90.20150709/gdb/stack.c 2015-07-09 18:24:42.254383911 +0200 +@@ -176,7 +176,7 @@ print_stack_frame (struct frame_info *fr argument (not just the first nameless argument). */ static void @@ -3067,7 +3044,7 @@ Index: gdb-7.8.90.20150202/gdb/stack.c int first, struct ui_file *stream) { struct gdbarch *gdbarch = get_frame_arch (frame); -@@ -524,7 +524,7 @@ print_frame_args (struct symbol *func, s +@@ -539,7 +539,7 @@ print_frame_args (struct symbol *func, s /* Offset of next stack argument beyond the one we have seen that is at the highest offset, or -1 if we haven't come to a stack argument yet. */ @@ -3076,7 +3053,7 @@ Index: gdb-7.8.90.20150202/gdb/stack.c /* Number of ints of arguments that we have printed so far. */ int args_printed = 0; struct cleanup *old_chain; -@@ -558,8 +558,8 @@ print_frame_args (struct symbol *func, s +@@ -573,8 +573,8 @@ print_frame_args (struct symbol *func, s case LOC_ARG: case LOC_REF_ARG: { @@ -3087,7 +3064,7 @@ Index: gdb-7.8.90.20150202/gdb/stack.c /* Compute address of next argument by adding the size of this argument and rounding to an int boundary. */ -@@ -694,7 +694,7 @@ print_frame_args (struct symbol *func, s +@@ -709,7 +709,7 @@ print_frame_args (struct symbol *func, s enough about the stack to find them. */ if (num != -1) { @@ -3096,10 +3073,10 @@ Index: gdb-7.8.90.20150202/gdb/stack.c if (highest_offset == -1) start = gdbarch_frame_args_skip (get_frame_arch (frame)); -Index: gdb-7.8.90.20150202/gdb/symmisc.c +Index: gdb-7.9.90.20150709/gdb/symmisc.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/symmisc.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/symmisc.c 2015-02-11 16:01:59.620966401 +0100 +--- gdb-7.9.90.20150709.orig/gdb/symmisc.c 2015-07-09 18:24:39.009356230 +0200 ++++ gdb-7.9.90.20150709/gdb/symmisc.c 2015-07-09 18:24:42.254383911 +0200 @@ -534,11 +534,11 @@ print_symbol (void *args) case LOC_CONST_BYTES: @@ -3115,10 +3092,10 @@ Index: gdb-7.8.90.20150202/gdb/symmisc.c for (i = 0; i < TYPE_LENGTH (type); i++) fprintf_filtered (outfile, " %02x", (unsigned) SYMBOL_VALUE_BYTES (symbol)[i]); -Index: gdb-7.8.90.20150202/gdb/target.c +Index: gdb-7.9.90.20150709/gdb/target.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/target.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/target.c 2015-02-11 16:01:59.621966406 +0100 +--- gdb-7.9.90.20150709.orig/gdb/target.c 2015-07-09 18:24:39.010356239 +0200 ++++ gdb-7.9.90.20150709/gdb/target.c 2015-07-09 18:24:42.255383919 +0200 @@ -54,7 +54,7 @@ static int default_watchpoint_addr_withi CORE_ADDR, CORE_ADDR, int); @@ -3128,7 +3105,7 @@ Index: gdb-7.8.90.20150202/gdb/target.c static void default_rcmd (struct target_ops *, const char *, struct ui_file *); -@@ -2975,7 +2975,7 @@ target_fileio_read_stralloc (const char +@@ -3085,7 +3085,7 @@ target_fileio_read_stralloc (struct infe static int default_region_ok_for_hw_watchpoint (struct target_ops *self, @@ -3137,11 +3114,11 @@ Index: gdb-7.8.90.20150202/gdb/target.c { return (len <= gdbarch_ptr_bit (target_gdbarch ()) / TARGET_CHAR_BIT); } -Index: gdb-7.8.90.20150202/gdb/target.h +Index: gdb-7.9.90.20150709/gdb/target.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/target.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/target.h 2015-02-11 16:01:59.622966411 +0100 -@@ -489,7 +489,7 @@ struct target_ops +--- gdb-7.9.90.20150709.orig/gdb/target.h 2015-07-09 18:24:39.010356239 +0200 ++++ gdb-7.9.90.20150709/gdb/target.h 2015-07-09 18:24:42.256383928 +0200 +@@ -547,7 +547,7 @@ struct target_ops /* Documentation of this routine is provided with the corresponding target_* macro. */ int (*to_region_ok_for_hw_watchpoint) (struct target_ops *, @@ -3150,10 +3127,10 @@ Index: gdb-7.8.90.20150202/gdb/target.h TARGET_DEFAULT_FUNC (default_region_ok_for_hw_watchpoint); int (*to_can_accel_watchpoint_condition) (struct target_ops *, -Index: gdb-7.8.90.20150202/gdb/tracepoint.c +Index: gdb-7.9.90.20150709/gdb/tracepoint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/tracepoint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/tracepoint.c 2015-02-11 16:01:59.623966416 +0100 +--- gdb-7.9.90.20150709.orig/gdb/tracepoint.c 2015-07-09 18:24:39.012356256 +0200 ++++ gdb-7.9.90.20150709/gdb/tracepoint.c 2015-07-09 18:24:42.257383936 +0200 @@ -928,13 +928,13 @@ add_register (struct collection_list *co static void add_memrange (struct collection_list *memranges, @@ -3247,11 +3224,11 @@ Index: gdb-7.8.90.20150202/gdb/tracepoint.c } if (BLOCK_FUNCTION (block)) break; -Index: gdb-7.8.90.20150202/gdb/typeprint.c +Index: gdb-7.9.90.20150709/gdb/typeprint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/typeprint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/typeprint.c 2015-02-11 16:01:59.623966416 +0100 -@@ -402,7 +402,7 @@ whatis_exp (char *exp, int show) +--- gdb-7.9.90.20150709.orig/gdb/typeprint.c 2015-07-09 18:24:39.013356264 +0200 ++++ gdb-7.9.90.20150709/gdb/typeprint.c 2015-07-09 18:24:42.257383936 +0200 +@@ -404,7 +404,7 @@ whatis_exp (char *exp, int show) struct type *real_type = NULL; struct type *type; int full = 0; @@ -3260,10 +3237,10 @@ Index: gdb-7.8.90.20150202/gdb/typeprint.c int using_enc = 0; struct value_print_options opts; struct type_print_options flags = default_ptype_flags; -Index: gdb-7.8.90.20150202/gdb/valarith.c +Index: gdb-7.9.90.20150709/gdb/valarith.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/valarith.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/valarith.c 2015-02-11 16:01:59.623966416 +0100 +--- gdb-7.9.90.20150709.orig/gdb/valarith.c 2015-07-09 18:24:39.014356273 +0200 ++++ gdb-7.9.90.20150709/gdb/valarith.c 2015-07-09 18:24:42.257383936 +0200 @@ -188,12 +188,13 @@ value_subscript (struct value *array, LO to doubles, but no longer does. */ @@ -3290,7 +3267,7 @@ Index: gdb-7.8.90.20150202/gdb/valarith.c if (elt_stride > 0) elt_offs *= elt_stride; -@@ -663,7 +664,7 @@ value_concat (struct value *arg1, struct +@@ -678,7 +679,7 @@ value_concat (struct value *arg1, struct struct value *inval1; struct value *inval2; struct value *outval = NULL; @@ -3299,7 +3276,7 @@ Index: gdb-7.8.90.20150202/gdb/valarith.c int count, idx; char *ptr; char inchar; -@@ -1516,7 +1517,7 @@ value_binop (struct value *arg1, struct +@@ -1531,7 +1532,7 @@ value_binop (struct value *arg1, struct int value_logical_not (struct value *arg1) { @@ -3308,7 +3285,7 @@ Index: gdb-7.8.90.20150202/gdb/valarith.c const gdb_byte *p; struct type *type1; -@@ -1547,11 +1548,11 @@ value_logical_not (struct value *arg1) +@@ -1562,11 +1563,11 @@ value_logical_not (struct value *arg1) static int value_strcmp (struct value *arg1, struct value *arg2) { @@ -3323,16 +3300,11 @@ Index: gdb-7.8.90.20150202/gdb/valarith.c for (i = 0; i < len; i++) { -Index: gdb-7.8.90.20150202/gdb/valops.c +Index: gdb-7.9.90.20150709/gdb/valops.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/valops.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/valops.c 2015-02-11 16:01:59.624966421 +0100 -@@ -47,11 +47,11 @@ static int typecmp (int staticp, int var - struct field t1[], struct value *t2[]); - - static struct value *search_struct_field (const char *, struct value *, -- int, struct type *, int); -+ LONGEST, struct type *, int); +--- gdb-7.9.90.20150709.orig/gdb/valops.c 2015-07-09 18:24:39.019356316 +0200 ++++ gdb-7.9.90.20150709/gdb/valops.c 2015-07-09 18:26:02.032064420 +0200 +@@ -51,7 +51,7 @@ static struct value *search_struct_field static struct value *search_struct_method (const char *, struct value **, struct value **, @@ -3520,21 +3492,16 @@ Index: gdb-7.8.90.20150202/gdb/valops.c if (BASETYPE_VIA_VIRTUAL (type, i)) { -@@ -1965,11 +1967,11 @@ do_search_struct_field (const char *name - fields, look for a baseclass named NAME. */ - - static struct value * --search_struct_field (const char *name, struct value *arg1, int offset, -+search_struct_field (const char *name, struct value *arg1, LONGEST offset, +@@ -1968,7 +1970,7 @@ search_struct_field (const char *name, s struct type *type, int looking_for_baseclass) { struct value *result = NULL; - int boffset = 0; + LONGEST boffset = 0; - do_search_struct_field (name, arg1, offset, type, looking_for_baseclass, + do_search_struct_field (name, arg1, 0, type, looking_for_baseclass, &result, &boffset, type); -@@ -1986,7 +1988,7 @@ search_struct_field (const char *name, s +@@ -1985,7 +1987,7 @@ search_struct_field (const char *name, s static struct value * search_struct_method (const char *name, struct value **arg1p, @@ -3543,7 +3510,7 @@ Index: gdb-7.8.90.20150202/gdb/valops.c int *static_memfuncp, struct type *type) { int i; -@@ -2050,8 +2052,8 @@ search_struct_method (const char *name, +@@ -2049,8 +2051,8 @@ search_struct_method (const char *name, for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--) { @@ -3554,7 +3521,7 @@ Index: gdb-7.8.90.20150202/gdb/valops.c if (BASETYPE_VIA_VIRTUAL (type, i)) { -@@ -2286,10 +2288,10 @@ value_struct_elt_bitpos (struct value ** +@@ -2285,10 +2287,10 @@ value_struct_elt_bitpos (struct value ** static void find_method_list (struct value **argp, const char *method, @@ -3567,7 +3534,7 @@ Index: gdb-7.8.90.20150202/gdb/valops.c { int i; struct fn_field *f = NULL; -@@ -2346,7 +2348,7 @@ find_method_list (struct value **argp, c +@@ -2345,7 +2347,7 @@ find_method_list (struct value **argp, c extension methods. */ for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--) { @@ -3576,7 +3543,7 @@ Index: gdb-7.8.90.20150202/gdb/valops.c if (BASETYPE_VIA_VIRTUAL (type, i)) { -@@ -2389,7 +2391,7 @@ value_find_oload_method_list (struct val +@@ -2388,7 +2390,7 @@ value_find_oload_method_list (struct val int offset, struct fn_field **fn_list, int *num_fns, VEC (xmethod_worker_ptr) **xm_worker_vec, @@ -3585,7 +3552,7 @@ Index: gdb-7.8.90.20150202/gdb/valops.c { struct type *t; -@@ -2500,7 +2502,7 @@ find_overload_match (struct value **args +@@ -2499,7 +2501,7 @@ find_overload_match (struct value **args /* Number of overloaded instances being considered. */ int num_fns = 0; struct type *basetype = NULL; @@ -3594,7 +3561,7 @@ Index: gdb-7.8.90.20150202/gdb/valops.c struct cleanup *all_cleanups = make_cleanup (null_cleanup, NULL); -@@ -3315,7 +3317,7 @@ compare_parameters (struct type *t1, str +@@ -3314,7 +3316,7 @@ compare_parameters (struct type *t1, str the form "DOMAIN::NAME". */ static struct value * @@ -3603,7 +3570,7 @@ Index: gdb-7.8.90.20150202/gdb/valops.c struct type *curtype, const char *name, struct type *intype, int want_address, -@@ -3349,7 +3351,7 @@ value_struct_elt_for_reference (struct t +@@ -3348,7 +3350,7 @@ value_struct_elt_for_reference (struct t if (want_address) return value_from_longest (lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain), @@ -3612,7 +3579,7 @@ Index: gdb-7.8.90.20150202/gdb/valops.c else if (noside != EVAL_NORMAL) return allocate_value (TYPE_FIELD_TYPE (t, i)); else -@@ -3517,7 +3519,7 @@ value_struct_elt_for_reference (struct t +@@ -3516,7 +3518,7 @@ value_struct_elt_for_reference (struct t for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--) { struct value *v; @@ -3621,16 +3588,16 @@ Index: gdb-7.8.90.20150202/gdb/valops.c if (BASETYPE_VIA_VIRTUAL (t, i)) base_offset = 0; -@@ -3598,7 +3600,7 @@ value_maybe_namespace_elt (const struct +@@ -3597,7 +3599,7 @@ value_maybe_namespace_elt (const struct struct type * value_rtti_indirect_type (struct value *v, int *full, - int *top, int *using_enc) + LONGEST *top, int *using_enc) { - struct value *target; + struct value *target = NULL; struct type *type, *real_type, *target_type; -@@ -3648,12 +3650,12 @@ value_rtti_indirect_type (struct value * +@@ -3665,12 +3667,12 @@ value_rtti_indirect_type (struct value * struct value * value_full_object (struct value *argp, struct type *rtype, @@ -3645,10 +3612,10 @@ Index: gdb-7.8.90.20150202/gdb/valops.c int using_enc = 0; struct value *new_val; -Index: gdb-7.8.90.20150202/gdb/valprint.c +Index: gdb-7.9.90.20150709/gdb/valprint.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/valprint.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/valprint.c 2015-02-11 16:01:59.625966426 +0100 +--- gdb-7.9.90.20150709.orig/gdb/valprint.c 2015-07-09 18:24:39.020356324 +0200 ++++ gdb-7.9.90.20150709/gdb/valprint.c 2015-07-09 18:24:42.260383962 +0200 @@ -298,7 +298,7 @@ val_print_scalar_type_p (struct type *ty int valprint_check_validity (struct ui_file *stream, @@ -3676,7 +3643,7 @@ Index: gdb-7.8.90.20150202/gdb/valprint.c CORE_ADDR address, struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options, -@@ -996,7 +996,7 @@ val_print_type_code_flags (struct type * +@@ -998,7 +998,7 @@ val_print_type_code_flags (struct type * void val_print_scalar_formatted (struct type *type, @@ -3685,7 +3652,7 @@ Index: gdb-7.8.90.20150202/gdb/valprint.c const struct value *val, const struct value_print_options *options, int size, -@@ -1538,7 +1538,7 @@ print_decimal_chars (struct ui_file *str +@@ -1540,7 +1540,7 @@ print_decimal_chars (struct ui_file *str void print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr, @@ -3694,7 +3661,7 @@ Index: gdb-7.8.90.20150202/gdb/valprint.c { const gdb_byte *p; -@@ -1655,22 +1655,22 @@ maybe_print_array_index (struct type *in +@@ -1657,22 +1657,22 @@ maybe_print_array_index (struct type *in void val_print_array_elements (struct type *type, @@ -3710,7 +3677,7 @@ Index: gdb-7.8.90.20150202/gdb/valprint.c unsigned int things_printed = 0; - unsigned len; + ULONGEST len; - struct type *elttype, *index_type; + struct type *elttype, *index_type, *base_index_type; - unsigned eltlen; + ULONGEST eltlen; /* Position of the array element we are examining to see @@ -3721,9 +3688,9 @@ Index: gdb-7.8.90.20150202/gdb/valprint.c - unsigned int reps; + ULONGEST reps; LONGEST low_bound, high_bound; + LONGEST low_pos, high_pos; - elttype = TYPE_TARGET_TYPE (type); -@@ -1741,7 +1741,7 @@ val_print_array_elements (struct type *t +@@ -1762,7 +1762,7 @@ val_print_array_elements (struct type *t address, stream, recurse + 1, val, options, current_language); annotate_elt_rep (reps); @@ -3732,7 +3699,7 @@ Index: gdb-7.8.90.20150202/gdb/valprint.c annotate_elt_rep_end (); i = rep1 - 1; -@@ -2397,7 +2397,7 @@ print_converted_chars_to_obstack (struct +@@ -2418,7 +2418,7 @@ print_converted_chars_to_obstack (struct void generic_printstr (struct ui_file *stream, struct type *type, @@ -3741,10 +3708,10 @@ Index: gdb-7.8.90.20150202/gdb/valprint.c const char *encoding, int force_ellipses, int quote_char, int c_style_terminator, const struct value_print_options *options) -Index: gdb-7.8.90.20150202/gdb/valprint.h +Index: gdb-7.9.90.20150709/gdb/valprint.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/valprint.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/valprint.h 2015-02-11 16:01:59.625966426 +0100 +--- gdb-7.9.90.20150709.orig/gdb/valprint.h 2015-07-09 18:24:39.021356333 +0200 ++++ gdb-7.9.90.20150709/gdb/valprint.h 2015-07-09 18:24:42.260383962 +0200 @@ -115,11 +115,11 @@ extern void maybe_print_array_index (str struct ui_file *stream, const struct value_print_options *); @@ -3795,10 +3762,10 @@ Index: gdb-7.8.90.20150202/gdb/valprint.h const char *encoding, int force_ellipses, int quote_char, int c_style_terminator, const struct value_print_options *options); -Index: gdb-7.8.90.20150202/gdb/value.c +Index: gdb-7.9.90.20150709/gdb/value.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/value.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/value.c 2015-02-11 16:01:59.626966431 +0100 +--- gdb-7.9.90.20150709.orig/gdb/value.c 2015-07-09 18:24:39.026356375 +0200 ++++ gdb-7.9.90.20150709/gdb/value.c 2015-07-09 18:24:42.261383970 +0200 @@ -66,10 +66,10 @@ struct internal_function struct range { @@ -4034,7 +4001,7 @@ Index: gdb-7.8.90.20150202/gdb/value.c { value->pointed_to_offset = val; } -@@ -2263,7 +2270,7 @@ get_internalvar_function (struct interna +@@ -2287,7 +2294,7 @@ get_internalvar_function (struct interna } void @@ -4043,7 +4010,7 @@ Index: gdb-7.8.90.20150202/gdb/value.c int bitsize, struct value *newval) { gdb_byte *addr; -@@ -2969,7 +2976,7 @@ set_value_enclosing_type (struct value * +@@ -3008,7 +3015,7 @@ set_value_enclosing_type (struct value * FIELDNO says which field. */ struct value * @@ -4052,7 +4019,7 @@ Index: gdb-7.8.90.20150202/gdb/value.c int fieldno, struct type *arg_type) { struct value *v; -@@ -3019,7 +3026,7 @@ value_primitive_field (struct value *arg +@@ -3058,7 +3065,7 @@ value_primitive_field (struct value *arg /* This field is actually a base subobject, so preserve the entire object's contents for later references to virtual bases, etc. */ @@ -4061,7 +4028,7 @@ Index: gdb-7.8.90.20150202/gdb/value.c /* Lazy register values with offsets are not supported. */ if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1)) -@@ -3105,7 +3112,7 @@ value_field (struct value *arg1, int fie +@@ -3144,7 +3151,7 @@ value_field (struct value *arg1, int fie struct value * value_fn_field (struct value **arg1p, struct fn_field *f, int j, struct type *type, @@ -4070,7 +4037,7 @@ Index: gdb-7.8.90.20150202/gdb/value.c { struct value *v; struct type *ftype = TYPE_FN_FIELD_TYPE (f, j); -@@ -3175,14 +3182,14 @@ value_fn_field (struct value **arg1p, st +@@ -3214,14 +3221,14 @@ value_fn_field (struct value **arg1p, st static LONGEST unpack_bits_as_long (struct type *field_type, const gdb_byte *valaddr, @@ -4087,7 +4054,7 @@ Index: gdb-7.8.90.20150202/gdb/value.c /* Read the minimum number of bytes required; there may not be enough bytes to read an entire ULONGEST. */ -@@ -3231,7 +3238,7 @@ unpack_bits_as_long (struct type *field_ +@@ -3270,7 +3277,7 @@ unpack_bits_as_long (struct type *field_ int unpack_value_field_as_long (struct type *type, const gdb_byte *valaddr, @@ -4096,7 +4063,7 @@ Index: gdb-7.8.90.20150202/gdb/value.c const struct value *val, LONGEST *result) { int bitpos = TYPE_FIELD_BITPOS (type, fieldno); -@@ -3275,7 +3282,7 @@ unpack_field_as_long (struct type *type, +@@ -3314,7 +3321,7 @@ unpack_field_as_long (struct type *type, void unpack_value_bitfield (struct value *dest_val, int bitpos, int bitsize, @@ -4105,7 +4072,7 @@ Index: gdb-7.8.90.20150202/gdb/value.c const struct value *val) { enum bfd_endian byte_order; -@@ -3313,7 +3320,7 @@ unpack_value_bitfield (struct value *des +@@ -3352,7 +3359,7 @@ unpack_value_bitfield (struct value *des struct value * value_field_bitfield (struct type *type, int fieldno, const gdb_byte *valaddr, @@ -4114,7 +4081,7 @@ Index: gdb-7.8.90.20150202/gdb/value.c { int bitpos = TYPE_FIELD_BITPOS (type, fieldno); int bitsize = TYPE_FIELD_BITSIZE (type, fieldno); -@@ -3334,12 +3341,12 @@ value_field_bitfield (struct type *type, +@@ -3373,12 +3380,12 @@ value_field_bitfield (struct type *type, void modify_field (struct type *type, gdb_byte *addr, @@ -4129,10 +4096,10 @@ Index: gdb-7.8.90.20150202/gdb/value.c /* Normalize BITPOS. */ addr += bitpos / 8; -Index: gdb-7.8.90.20150202/gdb/value.h +Index: gdb-7.9.90.20150709/gdb/value.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/value.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/value.h 2015-02-11 16:01:59.627966436 +0100 +--- gdb-7.9.90.20150709.orig/gdb/value.h 2015-07-09 18:24:39.027356384 +0200 ++++ gdb-7.9.90.20150709/gdb/value.h 2015-07-09 18:24:42.262383979 +0200 @@ -131,8 +131,8 @@ extern void set_value_parent (struct val within the registers structure. Note also the member embedded_offset below. */ @@ -4359,7 +4326,7 @@ Index: gdb-7.8.90.20150202/gdb/value.h struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options, -@@ -1054,10 +1057,11 @@ extern struct value *value_literal_compl +@@ -1056,10 +1059,11 @@ extern struct value *value_literal_compl extern struct value *find_function_in_inferior (const char *, struct objfile **); @@ -4373,11 +4340,11 @@ Index: gdb-7.8.90.20150202/gdb/value.h /* User function handler. */ -Index: gdb-7.8.90.20150202/gdb/s390-linux-nat.c +Index: gdb-7.9.90.20150709/gdb/s390-linux-nat.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/s390-linux-nat.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/s390-linux-nat.c 2015-02-11 16:01:59.627966436 +0100 -@@ -544,7 +544,7 @@ s390_can_use_hw_breakpoint (struct targe +--- gdb-7.9.90.20150709.orig/gdb/s390-linux-nat.c 2015-07-09 18:24:39.028356393 +0200 ++++ gdb-7.9.90.20150709/gdb/s390-linux-nat.c 2015-07-09 18:24:42.262383979 +0200 +@@ -612,7 +612,7 @@ s390_can_use_hw_breakpoint (struct targe static int s390_region_ok_for_hw_watchpoint (struct target_ops *self, @@ -4386,11 +4353,11 @@ Index: gdb-7.8.90.20150202/gdb/s390-linux-nat.c { return 1; } -Index: gdb-7.8.90.20150202/gdb/extension-priv.h +Index: gdb-7.9.90.20150709/gdb/extension-priv.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/extension-priv.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/extension-priv.h 2015-02-11 16:01:59.627966436 +0100 -@@ -175,7 +175,7 @@ struct extension_language_ops +--- gdb-7.9.90.20150709.orig/gdb/extension-priv.h 2015-07-09 18:24:39.028356393 +0200 ++++ gdb-7.9.90.20150709/gdb/extension-priv.h 2015-07-09 18:24:42.262383979 +0200 +@@ -180,7 +180,7 @@ struct extension_language_ops enum ext_lang_rc (*apply_val_pretty_printer) (const struct extension_language_defn *, struct type *type, const gdb_byte *valaddr, @@ -4399,11 +4366,11 @@ Index: gdb-7.8.90.20150202/gdb/extension-priv.h struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options, const struct language_defn *language); -Index: gdb-7.8.90.20150202/gdb/python/python-internal.h +Index: gdb-7.9.90.20150709/gdb/python/python-internal.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/python/python-internal.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/python/python-internal.h 2015-02-11 16:01:59.628966441 +0100 -@@ -313,7 +313,7 @@ extern int gdbpy_auto_load_enabled (cons +--- gdb-7.9.90.20150709.orig/gdb/python/python-internal.h 2015-07-09 18:24:39.028356393 +0200 ++++ gdb-7.9.90.20150709/gdb/python/python-internal.h 2015-07-09 18:24:42.263383988 +0200 +@@ -316,7 +316,7 @@ extern int gdbpy_auto_load_enabled (cons extern enum ext_lang_rc gdbpy_apply_val_pretty_printer (const struct extension_language_defn *, struct type *type, const gdb_byte *valaddr, @@ -4412,11 +4379,11 @@ Index: gdb-7.8.90.20150202/gdb/python/python-internal.h struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options, -Index: gdb-7.8.90.20150202/gdb/target-delegates.c +Index: gdb-7.9.90.20150709/gdb/target-delegates.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/target-delegates.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/target-delegates.c 2015-02-11 16:01:59.629966446 +0100 -@@ -634,14 +634,14 @@ debug_watchpoint_addr_within_range (stru +--- gdb-7.9.90.20150709.orig/gdb/target-delegates.c 2015-07-09 18:24:39.029356401 +0200 ++++ gdb-7.9.90.20150709/gdb/target-delegates.c 2015-07-09 18:24:42.264383996 +0200 +@@ -742,14 +742,14 @@ debug_watchpoint_addr_within_range (stru } static int @@ -4433,7 +4400,7 @@ Index: gdb-7.8.90.20150202/gdb/target-delegates.c { int result; fprintf_unfiltered (gdb_stdlog, "-> %s->to_region_ok_for_hw_watchpoint (...)\n", debug_target.to_shortname); -@@ -651,7 +651,7 @@ debug_region_ok_for_hw_watchpoint (struc +@@ -759,7 +759,7 @@ debug_region_ok_for_hw_watchpoint (struc fputs_unfiltered (", ", gdb_stdlog); target_debug_print_CORE_ADDR (arg1); fputs_unfiltered (", ", gdb_stdlog); @@ -4442,11 +4409,11 @@ Index: gdb-7.8.90.20150202/gdb/target-delegates.c fputs_unfiltered (") = ", gdb_stdlog); target_debug_print_int (result); fputs_unfiltered ("\n", gdb_stdlog); -Index: gdb-7.8.90.20150202/gdb/aarch64-linux-nat.c +Index: gdb-7.9.90.20150709/gdb/aarch64-linux-nat.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/aarch64-linux-nat.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/aarch64-linux-nat.c 2015-02-11 16:01:59.629966446 +0100 -@@ -1389,7 +1389,7 @@ aarch64_linux_remove_watchpoint (struct +--- gdb-7.9.90.20150709.orig/gdb/aarch64-linux-nat.c 2015-07-09 18:24:39.030356410 +0200 ++++ gdb-7.9.90.20150709/gdb/aarch64-linux-nat.c 2015-07-09 18:24:42.264383996 +0200 +@@ -1386,7 +1386,7 @@ aarch64_linux_remove_watchpoint (struct static int aarch64_linux_region_ok_for_hw_watchpoint (struct target_ops *self, @@ -4455,10 +4422,10 @@ Index: gdb-7.8.90.20150202/gdb/aarch64-linux-nat.c { CORE_ADDR aligned_addr; -Index: gdb-7.8.90.20150202/gdb/nat/x86-dregs.c +Index: gdb-7.9.90.20150709/gdb/nat/x86-dregs.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/nat/x86-dregs.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/nat/x86-dregs.c 2015-02-11 16:01:59.629966446 +0100 +--- gdb-7.9.90.20150709.orig/gdb/nat/x86-dregs.c 2015-07-09 18:24:39.030356410 +0200 ++++ gdb-7.9.90.20150709/gdb/nat/x86-dregs.c 2015-07-09 18:24:42.264383996 +0200 @@ -384,7 +384,7 @@ x86_remove_aligned_watchpoint (struct x8 static int @@ -4477,11 +4444,11 @@ Index: gdb-7.8.90.20150202/gdb/nat/x86-dregs.c { int nregs; -Index: gdb-7.8.90.20150202/gdb/compile/compile-c-support.c +Index: gdb-7.9.90.20150709/gdb/compile/compile-c-support.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/compile/compile-c-support.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/compile/compile-c-support.c 2015-02-11 16:01:59.629966446 +0100 -@@ -277,11 +277,11 @@ generate_register_struct (struct ui_file +--- gdb-7.9.90.20150709.orig/gdb/compile/compile-c-support.c 2015-07-09 18:24:39.030356410 +0200 ++++ gdb-7.9.90.20150709/gdb/compile/compile-c-support.c 2015-07-09 18:24:42.265384005 +0200 +@@ -299,11 +299,11 @@ generate_register_struct (struct ui_file default: fprintf_unfiltered (stream, @@ -4495,11 +4462,11 @@ Index: gdb-7.8.90.20150202/gdb/compile/compile-c-support.c } fputs_unfiltered (";\n", stream); -Index: gdb-7.8.90.20150202/gdb/nat/x86-dregs.h +Index: gdb-7.9.90.20150709/gdb/nat/x86-dregs.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/nat/x86-dregs.h 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/nat/x86-dregs.h 2015-02-11 16:01:59.630966451 +0100 -@@ -112,7 +112,7 @@ extern int x86_dr_remove_watchpoint (str +--- gdb-7.9.90.20150709.orig/gdb/nat/x86-dregs.h 2015-07-09 18:24:39.030356410 +0200 ++++ gdb-7.9.90.20150709/gdb/nat/x86-dregs.h 2015-07-09 18:24:42.265384005 +0200 +@@ -116,7 +116,7 @@ extern int x86_dr_remove_watchpoint (str /* Return non-zero if we can watch a memory region that starts at address ADDR and whose length is LEN bytes. */ extern int x86_dr_region_ok_for_watchpoint (struct x86_debug_reg_state *state, @@ -4508,10 +4475,10 @@ Index: gdb-7.8.90.20150202/gdb/nat/x86-dregs.h /* If the inferior has some break/watchpoint that triggered, set the address associated with that break/watchpoint and return true. -Index: gdb-7.8.90.20150202/gdb/x86-nat.c +Index: gdb-7.9.90.20150709/gdb/x86-nat.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/x86-nat.c 2015-02-11 16:01:51.366924625 +0100 -+++ gdb-7.8.90.20150202/gdb/x86-nat.c 2015-02-11 16:01:59.630966451 +0100 +--- gdb-7.9.90.20150709.orig/gdb/x86-nat.c 2015-07-09 18:24:39.031356418 +0200 ++++ gdb-7.9.90.20150709/gdb/x86-nat.c 2015-07-09 18:24:42.265384005 +0200 @@ -178,7 +178,7 @@ x86_remove_watchpoint (struct target_ops static int @@ -4521,11 +4488,11 @@ Index: gdb-7.8.90.20150202/gdb/x86-nat.c { struct x86_debug_reg_state *state = x86_debug_reg_state (ptid_get_pid (inferior_ptid)); -Index: gdb-7.8.90.20150202/gdb/guile/guile-internal.h +Index: gdb-7.9.90.20150709/gdb/guile/guile-internal.h =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/guile/guile-internal.h 2015-02-02 02:58:29.000000000 +0100 -+++ gdb-7.8.90.20150202/gdb/guile/guile-internal.h 2015-02-11 16:03:36.901445361 +0100 -@@ -559,7 +559,7 @@ extern void gdbscm_preserve_values +--- gdb-7.9.90.20150709.orig/gdb/guile/guile-internal.h 2015-07-09 18:24:39.031356418 +0200 ++++ gdb-7.9.90.20150709/gdb/guile/guile-internal.h 2015-07-09 18:24:42.265384005 +0200 +@@ -562,7 +562,7 @@ extern void gdbscm_preserve_values extern enum ext_lang_rc gdbscm_apply_val_pretty_printer (const struct extension_language_defn *, struct type *type, const gdb_byte *valaddr, @@ -4534,11 +4501,11 @@ Index: gdb-7.8.90.20150202/gdb/guile/guile-internal.h struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options, -Index: gdb-7.8.90.20150202/gdb/guile/scm-pretty-print.c +Index: gdb-7.9.90.20150709/gdb/guile/scm-pretty-print.c =================================================================== ---- gdb-7.8.90.20150202.orig/gdb/guile/scm-pretty-print.c 2015-02-02 02:58:29.000000000 +0100 -+++ gdb-7.8.90.20150202/gdb/guile/scm-pretty-print.c 2015-02-11 16:03:14.061335945 +0100 -@@ -955,7 +955,7 @@ ppscm_print_children (SCM printer, enum +--- gdb-7.9.90.20150709.orig/gdb/guile/scm-pretty-print.c 2015-07-09 18:24:39.031356418 +0200 ++++ gdb-7.9.90.20150709/gdb/guile/scm-pretty-print.c 2015-07-09 18:24:42.266384013 +0200 +@@ -958,7 +958,7 @@ ppscm_print_children (SCM printer, enum enum ext_lang_rc gdbscm_apply_val_pretty_printer (const struct extension_language_defn *extlang, struct type *type, const gdb_byte *valaddr, diff --git a/gdb-rhbz795424-bitpos-23of25.patch b/gdb-rhbz795424-bitpos-23of25.patch index 24914e9..898d297 100644 --- a/gdb-rhbz795424-bitpos-23of25.patch +++ b/gdb-rhbz795424-bitpos-23of25.patch @@ -137,10 +137,10 @@ Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=bitpos-tdep.patch -Index: gdb-7.8.50.20141228/gdb/alpha-tdep.c +Index: gdb-7.9.50.20150520/gdb/alpha-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/alpha-tdep.c 2015-01-05 22:18:55.988023607 +0100 -+++ gdb-7.8.50.20141228/gdb/alpha-tdep.c 2015-01-05 22:19:08.086078440 +0100 +--- gdb-7.9.50.20150520.orig/gdb/alpha-tdep.c 2015-05-31 17:15:01.056868035 +0200 ++++ gdb-7.9.50.20150520/gdb/alpha-tdep.c 2015-05-31 17:15:03.419882846 +0200 @@ -298,18 +298,18 @@ alpha_push_dummy_call (struct gdbarch *g { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); @@ -184,20 +184,20 @@ Index: gdb-7.8.50.20141228/gdb/alpha-tdep.c memcpy (arg_reg_buffer + offset, contents, tlen); offset += tlen; contents += tlen; -Index: gdb-7.8.50.20141228/gdb/amd64-tdep.c +Index: gdb-7.9.50.20150520/gdb/amd64-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/amd64-tdep.c 2015-01-05 22:18:55.989023612 +0100 -+++ gdb-7.8.50.20141228/gdb/amd64-tdep.c 2015-01-05 22:19:08.087078444 +0100 -@@ -700,7 +700,7 @@ amd64_return_value (struct gdbarch *gdba +--- gdb-7.9.50.20150520.orig/gdb/amd64-tdep.c 2015-05-31 17:15:01.058868047 +0200 ++++ gdb-7.9.50.20150520/gdb/amd64-tdep.c 2015-05-31 17:15:40.253113722 +0200 +@@ -701,7 +701,7 @@ amd64_return_value (struct gdbarch *gdba gdb_byte *readbuf, const gdb_byte *writebuf) { - enum amd64_reg_class class[2]; + enum amd64_reg_class theclass[2]; - int len = TYPE_LENGTH (type); + LONGEST len = TYPE_LENGTH (type); static int integer_regnum[] = { AMD64_RAX_REGNUM, AMD64_RDX_REGNUM }; static int sse_regnum[] = { AMD64_XMM0_REGNUM, AMD64_XMM1_REGNUM }; int integer_reg = 0; -@@ -851,8 +851,8 @@ amd64_push_arguments (struct regcache *r +@@ -852,8 +852,8 @@ amd64_push_arguments (struct regcache *r }; struct value **stack_args = alloca (nargs * sizeof (struct value *)); int num_stack_args = 0; @@ -208,19 +208,19 @@ Index: gdb-7.8.50.20141228/gdb/amd64-tdep.c int integer_reg = 0; int sse_reg = 0; int i; -@@ -864,7 +864,7 @@ amd64_push_arguments (struct regcache *r +@@ -865,7 +865,7 @@ amd64_push_arguments (struct regcache *r for (i = 0; i < nargs; i++) { struct type *type = value_type (args[i]); - int len = TYPE_LENGTH (type); + LONGEST len = TYPE_LENGTH (type); - enum amd64_reg_class class[2]; + enum amd64_reg_class theclass[2]; int needed_integer_regs = 0; int needed_sse_regs = 0; -Index: gdb-7.8.50.20141228/gdb/amd64-windows-tdep.c +Index: gdb-7.9.50.20150520/gdb/amd64-windows-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/amd64-windows-tdep.c 2015-01-05 22:18:55.990023616 +0100 -+++ gdb-7.8.50.20141228/gdb/amd64-windows-tdep.c 2015-01-05 22:19:08.087078444 +0100 +--- gdb-7.9.50.20150520.orig/gdb/amd64-windows-tdep.c 2015-05-31 17:15:01.059868054 +0200 ++++ gdb-7.9.50.20150520/gdb/amd64-windows-tdep.c 2015-05-31 17:15:03.421882859 +0200 @@ -288,7 +288,7 @@ amd64_windows_return_value (struct gdbar struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf) @@ -230,11 +230,11 @@ Index: gdb-7.8.50.20141228/gdb/amd64-windows-tdep.c int regnum = -1; /* See if our value is returned through a register. If it is, then -Index: gdb-7.8.50.20141228/gdb/arm-tdep.c +Index: gdb-7.9.50.20150520/gdb/arm-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/arm-tdep.c 2015-01-05 22:18:55.995023639 +0100 -+++ gdb-7.8.50.20141228/gdb/arm-tdep.c 2015-01-05 22:19:08.089078453 +0100 -@@ -3524,7 +3524,7 @@ arm_vfp_cprc_reg_char (enum arm_vfp_cprc +--- gdb-7.9.50.20150520.orig/gdb/arm-tdep.c 2015-05-31 17:15:01.069868116 +0200 ++++ gdb-7.9.50.20150520/gdb/arm-tdep.c 2015-05-31 17:15:03.425882884 +0200 +@@ -3537,7 +3537,7 @@ arm_vfp_cprc_reg_char (enum arm_vfp_cprc array). Vector types are not currently supported, matching the generic AAPCS support. */ @@ -243,7 +243,7 @@ Index: gdb-7.8.50.20141228/gdb/arm-tdep.c arm_vfp_cprc_sub_candidate (struct type *t, enum arm_vfp_cprc_base_type *base_type) { -@@ -3587,7 +3587,7 @@ arm_vfp_cprc_sub_candidate (struct type +@@ -3600,7 +3600,7 @@ arm_vfp_cprc_sub_candidate (struct type case TYPE_CODE_ARRAY: { @@ -252,7 +252,7 @@ Index: gdb-7.8.50.20141228/gdb/arm-tdep.c unsigned unitlen; count = arm_vfp_cprc_sub_candidate (TYPE_TARGET_TYPE (t), base_type); if (count == -1) -@@ -3607,13 +3607,15 @@ arm_vfp_cprc_sub_candidate (struct type +@@ -3620,13 +3620,15 @@ arm_vfp_cprc_sub_candidate (struct type case TYPE_CODE_STRUCT: { @@ -271,7 +271,7 @@ Index: gdb-7.8.50.20141228/gdb/arm-tdep.c if (sub_count == -1) return -1; count += sub_count; -@@ -3633,13 +3635,15 @@ arm_vfp_cprc_sub_candidate (struct type +@@ -3646,13 +3648,15 @@ arm_vfp_cprc_sub_candidate (struct type case TYPE_CODE_UNION: { @@ -290,7 +290,7 @@ Index: gdb-7.8.50.20141228/gdb/arm-tdep.c if (sub_count == -1) return -1; count = (count > sub_count ? count : sub_count); -@@ -3675,7 +3679,7 @@ arm_vfp_call_candidate (struct type *t, +@@ -3688,7 +3692,7 @@ arm_vfp_call_candidate (struct type *t, int *count) { enum arm_vfp_cprc_base_type b = VFP_CPRC_UNKNOWN; @@ -299,7 +299,7 @@ Index: gdb-7.8.50.20141228/gdb/arm-tdep.c if (c <= 0 || c > 4) return 0; *base_type = b; -@@ -3756,7 +3760,7 @@ arm_push_dummy_call (struct gdbarch *gdb +@@ -3769,7 +3773,7 @@ arm_push_dummy_call (struct gdbarch *gdb for (argnum = 0; argnum < nargs; argnum++) { @@ -308,10 +308,10 @@ Index: gdb-7.8.50.20141228/gdb/arm-tdep.c struct type *arg_type; struct type *target_type; enum type_code typecode; -Index: gdb-7.8.50.20141228/gdb/avr-tdep.c +Index: gdb-7.9.50.20150520/gdb/avr-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/avr-tdep.c 2015-01-05 22:18:55.996023643 +0100 -+++ gdb-7.8.50.20141228/gdb/avr-tdep.c 2015-01-05 22:19:08.089078453 +0100 +--- gdb-7.9.50.20150520.orig/gdb/avr-tdep.c 2015-05-31 17:15:01.071868129 +0200 ++++ gdb-7.9.50.20150520/gdb/avr-tdep.c 2015-05-31 17:15:03.425882884 +0200 @@ -1196,13 +1196,14 @@ avr_dummy_id (struct gdbarch *gdbarch, s struct stack_item @@ -345,10 +345,10 @@ Index: gdb-7.8.50.20141228/gdb/avr-tdep.c /* Calculate the potential last register needed. */ last_regnum = regnum - (len + (len & 1)); -Index: gdb-7.8.50.20141228/gdb/bfin-tdep.c +Index: gdb-7.9.50.20150520/gdb/bfin-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/bfin-tdep.c 2015-01-05 22:18:55.996023643 +0100 -+++ gdb-7.8.50.20141228/gdb/bfin-tdep.c 2015-01-05 22:19:08.090078458 +0100 +--- gdb-7.9.50.20150520.orig/gdb/bfin-tdep.c 2015-05-31 17:15:01.071868129 +0200 ++++ gdb-7.9.50.20150520/gdb/bfin-tdep.c 2015-05-31 17:15:03.426882890 +0200 @@ -504,7 +504,7 @@ bfin_push_dummy_call (struct gdbarch *gd gdb_byte buf[4]; int i; @@ -367,10 +367,10 @@ Index: gdb-7.8.50.20141228/gdb/bfin-tdep.c sp -= container_len; write_memory (sp, value_contents_writeable (args[i]), container_len); -Index: gdb-7.8.50.20141228/gdb/cris-tdep.c +Index: gdb-7.9.50.20150520/gdb/cris-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/cris-tdep.c 2015-01-05 22:18:55.997023648 +0100 -+++ gdb-7.8.50.20141228/gdb/cris-tdep.c 2015-01-05 22:19:08.090078458 +0100 +--- gdb-7.9.50.20150520.orig/gdb/cris-tdep.c 2015-05-31 17:15:01.073868142 +0200 ++++ gdb-7.9.50.20150520/gdb/cris-tdep.c 2015-05-31 17:15:03.427882897 +0200 @@ -663,13 +663,13 @@ static CORE_ADDR cris_unwind_sp (struct struct stack_item @@ -405,10 +405,10 @@ Index: gdb-7.8.50.20141228/gdb/cris-tdep.c /* How may registers worth of storage do we need for this argument? */ reg_demand = (len / 4) + (len % 4 != 0 ? 1 : 0); -Index: gdb-7.8.50.20141228/gdb/h8300-tdep.c +Index: gdb-7.9.50.20150520/gdb/h8300-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/h8300-tdep.c 2015-01-05 22:18:55.998023652 +0100 -+++ gdb-7.8.50.20141228/gdb/h8300-tdep.c 2015-01-05 22:19:08.091078463 +0100 +--- gdb-7.9.50.20150520.orig/gdb/h8300-tdep.c 2015-05-31 17:15:01.074868148 +0200 ++++ gdb-7.9.50.20150520/gdb/h8300-tdep.c 2015-05-31 17:15:03.427882897 +0200 @@ -639,7 +639,7 @@ h8300_push_dummy_call (struct gdbarch *g int struct_return, CORE_ADDR struct_addr) { @@ -441,11 +441,11 @@ Index: gdb-7.8.50.20141228/gdb/h8300-tdep.c for (offset = 0; offset < padded_len; offset += wordsize) { -Index: gdb-7.8.50.20141228/gdb/hppa-tdep.c +Index: gdb-7.9.50.20150520/gdb/hppa-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/hppa-tdep.c 2015-01-05 22:18:55.999023657 +0100 -+++ gdb-7.8.50.20141228/gdb/hppa-tdep.c 2015-01-05 22:19:08.091078463 +0100 -@@ -960,7 +960,7 @@ hppa64_push_dummy_call (struct gdbarch * +--- gdb-7.9.50.20150520.orig/gdb/hppa-tdep.c 2015-05-31 17:15:01.076868160 +0200 ++++ gdb-7.9.50.20150520/gdb/hppa-tdep.c 2015-05-31 17:15:03.428882903 +0200 +@@ -991,7 +991,7 @@ hppa64_push_dummy_call (struct gdbarch * { struct value *arg = args[i]; struct type *type = value_type (arg); @@ -454,7 +454,7 @@ Index: gdb-7.8.50.20141228/gdb/hppa-tdep.c const bfd_byte *valbuf; bfd_byte fptrbuf[8]; int regnum; -@@ -1155,7 +1155,7 @@ hppa64_return_value (struct gdbarch *gdb +@@ -1186,7 +1186,7 @@ hppa64_return_value (struct gdbarch *gdb struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf) { @@ -463,10 +463,10 @@ Index: gdb-7.8.50.20141228/gdb/hppa-tdep.c int regnum, offset; if (len > 16) -Index: gdb-7.8.50.20141228/gdb/i386-darwin-tdep.c +Index: gdb-7.9.50.20150520/gdb/i386-darwin-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/i386-darwin-tdep.c 2015-01-05 22:18:55.999023657 +0100 -+++ gdb-7.8.50.20141228/gdb/i386-darwin-tdep.c 2015-01-05 22:19:08.091078463 +0100 +--- gdb-7.9.50.20150520.orig/gdb/i386-darwin-tdep.c 2015-05-31 17:15:01.076868160 +0200 ++++ gdb-7.9.50.20150520/gdb/i386-darwin-tdep.c 2015-05-31 17:15:03.428882903 +0200 @@ -163,7 +163,7 @@ i386_darwin_push_dummy_call (struct gdba for (write_pass = 0; write_pass < 2; write_pass++) @@ -476,11 +476,11 @@ Index: gdb-7.8.50.20141228/gdb/i386-darwin-tdep.c int num_m128 = 0; if (struct_return) -Index: gdb-7.8.50.20141228/gdb/i386-tdep.c +Index: gdb-7.9.50.20150520/gdb/i386-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/i386-tdep.c 2015-01-05 22:18:56.002023671 +0100 -+++ gdb-7.8.50.20141228/gdb/i386-tdep.c 2015-01-05 22:19:08.092078467 +0100 -@@ -2643,7 +2643,7 @@ i386_push_dummy_call (struct gdbarch *gd +--- gdb-7.9.50.20150520.orig/gdb/i386-tdep.c 2015-05-31 17:15:01.082868198 +0200 ++++ gdb-7.9.50.20150520/gdb/i386-tdep.c 2015-05-31 17:15:03.430882915 +0200 +@@ -2651,7 +2651,7 @@ i386_push_dummy_call (struct gdbarch *gd gdb_byte buf[4]; int i; int write_pass; @@ -489,7 +489,7 @@ Index: gdb-7.8.50.20141228/gdb/i386-tdep.c /* Determine the total space required for arguments and struct return address in a first pass (allowing for 16-byte-aligned -@@ -2651,7 +2651,7 @@ i386_push_dummy_call (struct gdbarch *gd +@@ -2659,7 +2659,7 @@ i386_push_dummy_call (struct gdbarch *gd for (write_pass = 0; write_pass < 2; write_pass++) { @@ -498,7 +498,7 @@ Index: gdb-7.8.50.20141228/gdb/i386-tdep.c if (struct_return) { -@@ -2668,7 +2668,7 @@ i386_push_dummy_call (struct gdbarch *gd +@@ -2676,7 +2676,7 @@ i386_push_dummy_call (struct gdbarch *gd for (i = 0; i < nargs; i++) { @@ -507,7 +507,7 @@ Index: gdb-7.8.50.20141228/gdb/i386-tdep.c if (write_pass) { -@@ -2875,7 +2875,7 @@ i386_reg_struct_return_p (struct gdbarch +@@ -2883,7 +2883,7 @@ i386_reg_struct_return_p (struct gdbarch { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); enum type_code code = TYPE_CODE (type); @@ -516,7 +516,7 @@ Index: gdb-7.8.50.20141228/gdb/i386-tdep.c gdb_assert (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION -@@ -3621,7 +3621,7 @@ static int +@@ -3629,7 +3629,7 @@ static int i386_convert_register_p (struct gdbarch *gdbarch, int regnum, struct type *type) { @@ -525,7 +525,7 @@ Index: gdb-7.8.50.20141228/gdb/i386-tdep.c /* Values may be spread across multiple registers. Most debugging formats aren't expressive enough to specify the locations, so -@@ -3654,7 +3654,7 @@ i386_register_to_value (struct frame_inf +@@ -3662,7 +3662,7 @@ i386_register_to_value (struct frame_inf int *optimizedp, int *unavailablep) { struct gdbarch *gdbarch = get_frame_arch (frame); @@ -534,7 +534,7 @@ Index: gdb-7.8.50.20141228/gdb/i386-tdep.c if (i386_fp_regnum_p (gdbarch, regnum)) return i387_register_to_value (frame, regnum, type, to, -@@ -3690,7 +3690,7 @@ static void +@@ -3698,7 +3698,7 @@ static void i386_value_to_register (struct frame_info *frame, int regnum, struct type *type, const gdb_byte *from) { @@ -543,11 +543,11 @@ Index: gdb-7.8.50.20141228/gdb/i386-tdep.c if (i386_fp_regnum_p (get_frame_arch (frame), regnum)) { -Index: gdb-7.8.50.20141228/gdb/iq2000-tdep.c +Index: gdb-7.9.50.20150520/gdb/iq2000-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/iq2000-tdep.c 2015-01-05 22:18:56.003023675 +0100 -+++ gdb-7.8.50.20141228/gdb/iq2000-tdep.c 2015-01-05 22:19:08.092078467 +0100 -@@ -653,8 +653,9 @@ iq2000_push_dummy_call (struct gdbarch * +--- gdb-7.9.50.20150520.orig/gdb/iq2000-tdep.c 2015-05-31 17:15:01.083868204 +0200 ++++ gdb-7.9.50.20150520/gdb/iq2000-tdep.c 2015-05-31 17:15:03.431882922 +0200 +@@ -651,8 +651,9 @@ iq2000_push_dummy_call (struct gdbarch * const bfd_byte *val; bfd_byte buf[4]; struct type *type; @@ -559,10 +559,10 @@ Index: gdb-7.8.50.20141228/gdb/iq2000-tdep.c /* Used to copy struct arguments into the stack. */ CORE_ADDR struct_ptr; -Index: gdb-7.8.50.20141228/gdb/m32r-tdep.c +Index: gdb-7.9.50.20150520/gdb/m32r-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/m32r-tdep.c 2015-01-05 22:18:56.003023675 +0100 -+++ gdb-7.8.50.20141228/gdb/m32r-tdep.c 2015-01-05 22:19:08.093078472 +0100 +--- gdb-7.9.50.20150520.orig/gdb/m32r-tdep.c 2015-05-31 17:15:01.083868204 +0200 ++++ gdb-7.9.50.20150520/gdb/m32r-tdep.c 2015-05-31 17:15:03.431882922 +0200 @@ -687,7 +687,7 @@ m32r_push_dummy_call (struct gdbarch *gd CORE_ADDR regval; gdb_byte *val; @@ -572,10 +572,10 @@ Index: gdb-7.8.50.20141228/gdb/m32r-tdep.c /* First force sp to a 4-byte alignment. */ sp = sp & ~3; -Index: gdb-7.8.50.20141228/gdb/m68k-tdep.c +Index: gdb-7.9.50.20150520/gdb/m68k-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/m68k-tdep.c 2015-01-05 22:18:56.003023675 +0100 -+++ gdb-7.8.50.20141228/gdb/m68k-tdep.c 2015-01-05 22:19:08.093078472 +0100 +--- gdb-7.9.50.20150520.orig/gdb/m68k-tdep.c 2015-05-31 17:15:01.084868210 +0200 ++++ gdb-7.9.50.20150520/gdb/m68k-tdep.c 2015-05-31 17:15:03.432882928 +0200 @@ -382,7 +382,7 @@ m68k_reg_struct_return_p (struct gdbarch { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); @@ -598,10 +598,10 @@ Index: gdb-7.8.50.20141228/gdb/m68k-tdep.c /* Non-scalars bigger than 4 bytes are left aligned, others are right aligned. */ -Index: gdb-7.8.50.20141228/gdb/m88k-tdep.c +Index: gdb-7.9.50.20150520/gdb/m88k-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/m88k-tdep.c 2015-01-05 22:18:56.004023680 +0100 -+++ gdb-7.8.50.20141228/gdb/m88k-tdep.c 2015-01-05 22:19:08.093078472 +0100 +--- gdb-7.9.50.20150520.orig/gdb/m88k-tdep.c 2015-05-31 17:15:01.085868217 +0200 ++++ gdb-7.9.50.20150520/gdb/m88k-tdep.c 2015-05-31 17:15:03.432882928 +0200 @@ -257,13 +257,13 @@ m88k_store_arguments (struct regcache *r { struct gdbarch *gdbarch = get_regcache_arch (regcache); @@ -629,10 +629,10 @@ Index: gdb-7.8.50.20141228/gdb/m88k-tdep.c if (m88k_in_register_p (type)) { -Index: gdb-7.8.50.20141228/gdb/mep-tdep.c +Index: gdb-7.9.50.20150520/gdb/mep-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/mep-tdep.c 2015-01-05 22:18:56.005023684 +0100 -+++ gdb-7.8.50.20141228/gdb/mep-tdep.c 2015-01-05 22:19:08.093078472 +0100 +--- gdb-7.9.50.20150520.orig/gdb/mep-tdep.c 2015-05-31 17:15:01.086868223 +0200 ++++ gdb-7.9.50.20150520/gdb/mep-tdep.c 2015-05-31 17:15:03.433882934 +0200 @@ -2269,7 +2269,7 @@ push_large_arguments (CORE_ADDR sp, int for (i = 0; i < argc; i++) @@ -642,10 +642,10 @@ Index: gdb-7.8.50.20141228/gdb/mep-tdep.c if (arg_len > MEP_GPR_SIZE) { -Index: gdb-7.8.50.20141228/gdb/mips-tdep.c +Index: gdb-7.9.50.20150520/gdb/mips-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/mips-tdep.c 2015-01-05 22:18:56.009023702 +0100 -+++ gdb-7.8.50.20141228/gdb/mips-tdep.c 2015-01-05 22:19:08.095078481 +0100 +--- gdb-7.9.50.20150520.orig/gdb/mips-tdep.c 2015-05-31 17:15:01.094868273 +0200 ++++ gdb-7.9.50.20150520/gdb/mips-tdep.c 2015-05-31 17:15:03.435882947 +0200 @@ -455,7 +455,7 @@ static void mips_xfer_register (struct gdbarch *gdbarch, struct regcache *regcache, int reg_num, int length, @@ -791,10 +791,10 @@ Index: gdb-7.8.50.20141228/gdb/mips-tdep.c val = value_contents (arg); -Index: gdb-7.8.50.20141228/gdb/mn10300-tdep.c +Index: gdb-7.9.50.20150520/gdb/mn10300-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/mn10300-tdep.c 2015-01-05 22:18:56.010023707 +0100 -+++ gdb-7.8.50.20141228/gdb/mn10300-tdep.c 2015-01-05 22:19:08.096078485 +0100 +--- gdb-7.9.50.20150520.orig/gdb/mn10300-tdep.c 2015-05-31 17:15:01.095868279 +0200 ++++ gdb-7.9.50.20150520/gdb/mn10300-tdep.c 2015-05-31 17:15:03.435882947 +0200 @@ -1225,7 +1225,7 @@ mn10300_push_dummy_call (struct gdbarch enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); const int push_size = register_size (gdbarch, E_PC_REGNUM); @@ -804,10 +804,10 @@ Index: gdb-7.8.50.20141228/gdb/mn10300-tdep.c int stack_offset = 0; int argnum; const gdb_byte *val; -Index: gdb-7.8.50.20141228/gdb/mt-tdep.c +Index: gdb-7.9.50.20150520/gdb/mt-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/mt-tdep.c 2015-01-05 22:18:56.010023707 +0100 -+++ gdb-7.8.50.20141228/gdb/mt-tdep.c 2015-01-05 22:19:08.096078485 +0100 +--- gdb-7.9.50.20150520.orig/gdb/mt-tdep.c 2015-05-31 17:15:01.096868286 +0200 ++++ gdb-7.9.50.20150520/gdb/mt-tdep.c 2015-05-31 17:15:03.436882953 +0200 @@ -781,9 +781,9 @@ mt_push_dummy_call (struct gdbarch *gdba gdb_byte buf[MT_MAX_STRUCT_SIZE]; int argreg = MT_1ST_ARGREG; @@ -820,10 +820,10 @@ Index: gdb-7.8.50.20141228/gdb/mt-tdep.c int i, j; /* First handle however many args we can fit into MT_1ST_ARGREG thru -Index: gdb-7.8.50.20141228/gdb/ppc-sysv-tdep.c +Index: gdb-7.9.50.20150520/gdb/ppc-sysv-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/ppc-sysv-tdep.c 2015-01-05 22:18:56.011023711 +0100 -+++ gdb-7.8.50.20141228/gdb/ppc-sysv-tdep.c 2015-01-05 22:19:08.096078485 +0100 +--- gdb-7.9.50.20150520.orig/gdb/ppc-sysv-tdep.c 2015-05-31 17:15:01.097868292 +0200 ++++ gdb-7.9.50.20150520/gdb/ppc-sysv-tdep.c 2015-05-31 17:15:03.436882953 +0200 @@ -66,7 +66,7 @@ ppc_sysv_abi_push_dummy_call (struct gdb enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); int opencl_abi = ppc_sysv_use_opencl_abi (value_type (function)); @@ -868,11 +868,11 @@ Index: gdb-7.8.50.20141228/gdb/ppc-sysv-tdep.c /* Enforce alignment of stack location, if requested. */ if (align > tdep->wordsize) -Index: gdb-7.8.50.20141228/gdb/rl78-tdep.c +Index: gdb-7.9.50.20150520/gdb/rl78-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/rl78-tdep.c 2015-01-05 22:18:56.011023711 +0100 -+++ gdb-7.8.50.20141228/gdb/rl78-tdep.c 2015-01-05 22:19:08.096078485 +0100 -@@ -1251,8 +1251,8 @@ rl78_push_dummy_call (struct gdbarch *gd +--- gdb-7.9.50.20150520.orig/gdb/rl78-tdep.c 2015-05-31 17:15:01.097868292 +0200 ++++ gdb-7.9.50.20150520/gdb/rl78-tdep.c 2015-05-31 17:15:03.437882959 +0200 +@@ -1333,8 +1333,8 @@ rl78_push_dummy_call (struct gdbarch *gd for (i = nargs - 1; i >= 0; i--) { struct type *value_type = value_enclosing_type (args[i]); @@ -883,10 +883,10 @@ Index: gdb-7.8.50.20141228/gdb/rl78-tdep.c sp -= container_len; write_memory (rl78_make_data_address (sp), -Index: gdb-7.8.50.20141228/gdb/rs6000-aix-tdep.c +Index: gdb-7.9.50.20150520/gdb/rs6000-aix-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/rs6000-aix-tdep.c 2015-01-05 22:18:56.012023716 +0100 -+++ gdb-7.8.50.20141228/gdb/rs6000-aix-tdep.c 2015-01-05 22:19:08.097078490 +0100 +--- gdb-7.9.50.20150520.orig/gdb/rs6000-aix-tdep.c 2015-05-31 17:15:01.098868298 +0200 ++++ gdb-7.9.50.20150520/gdb/rs6000-aix-tdep.c 2015-05-31 17:15:03.437882959 +0200 @@ -186,9 +186,9 @@ rs6000_push_dummy_call (struct gdbarch * struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); @@ -908,32 +908,32 @@ Index: gdb-7.8.50.20141228/gdb/rs6000-aix-tdep.c if (argbytes) { -Index: gdb-7.8.50.20141228/gdb/s390-linux-tdep.c +Index: gdb-7.9.50.20150520/gdb/s390-linux-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/s390-linux-tdep.c 2015-01-05 22:18:56.013023720 +0100 -+++ gdb-7.8.50.20141228/gdb/s390-linux-tdep.c 2015-01-05 22:19:08.097078490 +0100 -@@ -2334,7 +2334,7 @@ is_float_like (struct type *type) - +--- gdb-7.9.50.20150520.orig/gdb/s390-linux-tdep.c 2015-05-31 17:15:01.099868304 +0200 ++++ gdb-7.9.50.20150520/gdb/s390-linux-tdep.c 2015-05-31 17:16:13.285320769 +0200 +@@ -2463,7 +2463,7 @@ s390_function_arg_vector (struct type *t + /* Determine whether N is a power of two. */ static int -is_power_of_two (unsigned int n) +is_power_of_two (ULONGEST n) { - return ((n & (n - 1)) == 0); + return n && ((n & (n - 1)) == 0); } -@@ -2520,7 +2520,7 @@ s390_push_dummy_call (struct gdbarch *gd - { - struct value *arg = args[i]; - struct type *type = check_typedef (value_type (arg)); -- unsigned length = TYPE_LENGTH (type); -+ ULONGEST length = TYPE_LENGTH (type); +@@ -2520,7 +2520,7 @@ s390_handle_arg (struct s390_arg_state * + enum bfd_endian byte_order, int is_unnamed) + { + struct type *type = check_typedef (value_type (arg)); +- unsigned int length = TYPE_LENGTH (type); ++ ULONGEST length = TYPE_LENGTH (type); + int write_mode = as->regcache != NULL; - if (s390_function_arg_pass_by_reference (type)) - { -Index: gdb-7.8.50.20141228/gdb/score-tdep.c + if (s390_function_arg_float (type)) +Index: gdb-7.9.50.20150520/gdb/score-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/score-tdep.c 2015-01-05 22:18:56.013023720 +0100 -+++ gdb-7.8.50.20141228/gdb/score-tdep.c 2015-01-05 22:19:08.097078490 +0100 +--- gdb-7.9.50.20150520.orig/gdb/score-tdep.c 2015-05-31 17:15:01.100868311 +0200 ++++ gdb-7.9.50.20150520/gdb/score-tdep.c 2015-05-31 17:15:03.439882972 +0200 @@ -514,7 +514,7 @@ score_push_dummy_call (struct gdbarch *g enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); int argnum; @@ -943,10 +943,10 @@ Index: gdb-7.8.50.20141228/gdb/score-tdep.c CORE_ADDR stack_offset = 0; CORE_ADDR addr = 0; -Index: gdb-7.8.50.20141228/gdb/sh-tdep.c +Index: gdb-7.9.50.20150520/gdb/sh-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/sh-tdep.c 2015-01-05 22:18:56.014023725 +0100 -+++ gdb-7.8.50.20141228/gdb/sh-tdep.c 2015-01-05 22:19:08.098078494 +0100 +--- gdb-7.9.50.20150520.orig/gdb/sh-tdep.c 2015-05-31 17:15:01.101868317 +0200 ++++ gdb-7.9.50.20150520/gdb/sh-tdep.c 2015-05-31 17:15:03.439882972 +0200 @@ -805,7 +805,7 @@ sh_skip_prologue (struct gdbarch *gdbarc static int sh_use_struct_convention (int renesas_abi, struct type *type) @@ -985,10 +985,10 @@ Index: gdb-7.8.50.20141228/gdb/sh-tdep.c int pass_on_stack = 0; int last_reg_arg = INT_MAX; -Index: gdb-7.8.50.20141228/gdb/sh64-tdep.c +Index: gdb-7.9.50.20150520/gdb/sh64-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/sh64-tdep.c 2015-01-05 22:18:56.015023729 +0100 -+++ gdb-7.8.50.20141228/gdb/sh64-tdep.c 2015-01-05 22:19:08.098078494 +0100 +--- gdb-7.9.50.20150520.orig/gdb/sh64-tdep.c 2015-05-31 17:15:01.102868323 +0200 ++++ gdb-7.9.50.20150520/gdb/sh64-tdep.c 2015-05-31 17:15:03.440882978 +0200 @@ -1056,7 +1056,7 @@ sh64_push_dummy_call (struct gdbarch *gd CORE_ADDR struct_addr) { @@ -1007,10 +1007,10 @@ Index: gdb-7.8.50.20141228/gdb/sh64-tdep.c int argreg_size; int fp_args[12]; -Index: gdb-7.8.50.20141228/gdb/sparc-tdep.c +Index: gdb-7.9.50.20150520/gdb/sparc-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/sparc-tdep.c 2015-01-05 22:18:56.016023734 +0100 -+++ gdb-7.8.50.20141228/gdb/sparc-tdep.c 2015-01-05 22:19:08.098078494 +0100 +--- gdb-7.9.50.20150520.orig/gdb/sparc-tdep.c 2015-05-31 17:15:01.103868329 +0200 ++++ gdb-7.9.50.20150520/gdb/sparc-tdep.c 2015-05-31 17:15:03.441882984 +0200 @@ -525,7 +525,7 @@ sparc32_store_arguments (struct regcache for (i = 0; i < nargs; i++) { @@ -1020,10 +1020,10 @@ Index: gdb-7.8.50.20141228/gdb/sparc-tdep.c if (sparc_structure_or_union_p (type) || (sparc_floating_p (type) && len == 16) -Index: gdb-7.8.50.20141228/gdb/sparc64-tdep.c +Index: gdb-7.9.50.20150520/gdb/sparc64-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/sparc64-tdep.c 2015-01-05 22:18:56.016023734 +0100 -+++ gdb-7.8.50.20141228/gdb/sparc64-tdep.c 2015-01-05 22:19:08.099078499 +0100 +--- gdb-7.9.50.20150520.orig/gdb/sparc64-tdep.c 2015-05-31 17:15:01.104868336 +0200 ++++ gdb-7.9.50.20150520/gdb/sparc64-tdep.c 2015-05-31 17:15:03.441882984 +0200 @@ -636,7 +636,8 @@ sparc64_16_byte_align_p (struct type *ty static void @@ -1079,10 +1079,10 @@ Index: gdb-7.8.50.20141228/gdb/sparc64-tdep.c int regnum = -1; gdb_byte buf[16]; -Index: gdb-7.8.50.20141228/gdb/spu-tdep.c +Index: gdb-7.9.50.20150520/gdb/spu-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/spu-tdep.c 2015-01-05 22:18:56.017023739 +0100 -+++ gdb-7.8.50.20141228/gdb/spu-tdep.c 2015-01-05 22:19:08.099078499 +0100 +--- gdb-7.9.50.20150520.orig/gdb/spu-tdep.c 2015-05-31 17:15:01.105868342 +0200 ++++ gdb-7.9.50.20150520/gdb/spu-tdep.c 2015-05-31 17:15:03.442882990 +0200 @@ -1430,7 +1430,7 @@ spu_push_dummy_call (struct gdbarch *gdb struct value *arg = args[i]; struct type *type = check_typedef (value_type (arg)); @@ -1101,10 +1101,10 @@ Index: gdb-7.8.50.20141228/gdb/spu-tdep.c int preferred_slot; if (spu_scalar_value_p (type)) -Index: gdb-7.8.50.20141228/gdb/tic6x-tdep.c +Index: gdb-7.9.50.20150520/gdb/tic6x-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/tic6x-tdep.c 2015-01-05 22:18:56.018023743 +0100 -+++ gdb-7.8.50.20141228/gdb/tic6x-tdep.c 2015-01-05 22:19:08.099078499 +0100 +--- gdb-7.9.50.20150520.orig/gdb/tic6x-tdep.c 2015-05-31 17:15:01.106868348 +0200 ++++ gdb-7.9.50.20150520/gdb/tic6x-tdep.c 2015-05-31 17:15:03.442882990 +0200 @@ -895,7 +895,7 @@ tic6x_push_dummy_call (struct gdbarch *g int argreg = 0; int argnum; @@ -1142,10 +1142,10 @@ Index: gdb-7.8.50.20141228/gdb/tic6x-tdep.c addr = sp + stack_offset; write_memory (addr, val, len); -Index: gdb-7.8.50.20141228/gdb/tilegx-tdep.c +Index: gdb-7.9.50.20150520/gdb/tilegx-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/tilegx-tdep.c 2015-01-05 22:18:56.018023743 +0100 -+++ gdb-7.8.50.20141228/gdb/tilegx-tdep.c 2015-01-05 22:19:08.100078503 +0100 +--- gdb-7.9.50.20150520.orig/gdb/tilegx-tdep.c 2015-05-31 17:15:01.107868355 +0200 ++++ gdb-7.9.50.20150520/gdb/tilegx-tdep.c 2015-05-31 17:15:03.442882990 +0200 @@ -288,7 +288,7 @@ tilegx_push_dummy_call (struct gdbarch * CORE_ADDR stack_dest = sp; int argreg = TILEGX_R0_REGNUM; @@ -1155,10 +1155,10 @@ Index: gdb-7.8.50.20141228/gdb/tilegx-tdep.c static const gdb_byte four_zero_words[16] = { 0 }; /* If struct_return is 1, then the struct return address will -Index: gdb-7.8.50.20141228/gdb/v850-tdep.c +Index: gdb-7.9.50.20150520/gdb/v850-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/v850-tdep.c 2015-01-05 22:18:56.019023748 +0100 -+++ gdb-7.8.50.20141228/gdb/v850-tdep.c 2015-01-05 22:19:08.100078503 +0100 +--- gdb-7.9.50.20150520.orig/gdb/v850-tdep.c 2015-05-31 17:15:01.107868355 +0200 ++++ gdb-7.9.50.20150520/gdb/v850-tdep.c 2015-05-31 17:15:03.443882997 +0200 @@ -1019,7 +1019,7 @@ v850_push_dummy_call (struct gdbarch *gd enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); int argreg; @@ -1177,10 +1177,10 @@ Index: gdb-7.8.50.20141228/gdb/v850-tdep.c gdb_byte *val; gdb_byte valbuf[v850_reg_size]; -Index: gdb-7.8.50.20141228/gdb/vax-tdep.c +Index: gdb-7.9.50.20150520/gdb/vax-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/vax-tdep.c 2015-01-05 22:18:56.019023748 +0100 -+++ gdb-7.8.50.20141228/gdb/vax-tdep.c 2015-01-05 22:19:08.100078503 +0100 +--- gdb-7.9.50.20150520.orig/gdb/vax-tdep.c 2015-05-31 17:15:01.108868361 +0200 ++++ gdb-7.9.50.20150520/gdb/vax-tdep.c 2015-05-31 17:15:03.443882997 +0200 @@ -111,7 +111,7 @@ vax_store_arguments (struct regcache *re struct gdbarch *gdbarch = get_regcache_arch (regcache); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); @@ -1199,10 +1199,10 @@ Index: gdb-7.8.50.20141228/gdb/vax-tdep.c sp -= (len + 3) & ~3; count += (len + 3) / 4; -Index: gdb-7.8.50.20141228/gdb/xstormy16-tdep.c +Index: gdb-7.9.50.20150520/gdb/xstormy16-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/xstormy16-tdep.c 2015-01-05 22:18:56.020023752 +0100 -+++ gdb-7.8.50.20141228/gdb/xstormy16-tdep.c 2015-01-05 22:19:08.100078503 +0100 +--- gdb-7.9.50.20150520.orig/gdb/xstormy16-tdep.c 2015-05-31 17:15:01.108868361 +0200 ++++ gdb-7.9.50.20150520/gdb/xstormy16-tdep.c 2015-05-31 17:15:03.443882997 +0200 @@ -233,8 +233,9 @@ xstormy16_push_dummy_call (struct gdbarc enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); CORE_ADDR stack_dest = sp; @@ -1215,10 +1215,10 @@ Index: gdb-7.8.50.20141228/gdb/xstormy16-tdep.c const gdb_byte *val; gdb_byte buf[xstormy16_pc_size]; -Index: gdb-7.8.50.20141228/gdb/xtensa-tdep.c +Index: gdb-7.9.50.20150520/gdb/xtensa-tdep.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/xtensa-tdep.c 2015-01-05 22:18:56.021023757 +0100 -+++ gdb-7.8.50.20141228/gdb/xtensa-tdep.c 2015-01-05 22:19:08.101078508 +0100 +--- gdb-7.9.50.20150520.orig/gdb/xtensa-tdep.c 2015-05-31 17:15:01.110868373 +0200 ++++ gdb-7.9.50.20150520/gdb/xtensa-tdep.c 2015-05-31 17:15:03.444883003 +0200 @@ -1646,8 +1646,7 @@ xtensa_store_return_value (struct type * if (len > (callsize > 8 ? 8 : 16)) diff --git a/gdb-s390-reorder-arch.diff b/gdb-s390-reorder-arch.diff deleted file mode 100644 index 385cc83..0000000 --- a/gdb-s390-reorder-arch.diff +++ /dev/null @@ -1,106 +0,0 @@ -Fix for bnc #936050. - -From 48cfb913ac0ad24b978514270886b807d6f2495e Mon Sep 17 00:00:00 2001 -From: Andreas Arnez -Date: Wed, 4 Mar 2015 10:40:39 +0100 -Subject: [PATCH 05/25] S390: Place "s390:31-bit" after default arch in 64-bit - arch list - -On 64-bit platforms GDB did not include "s390:31-bit" in its list of -architecture names. This patch fixes that. - -To determine the list of architecture names for S390, -gdbarch_printable_names() walks through the linked list of BFD arches -starting with the default S390 arch, which is "s390:64-bit" on 64-bit -platforms. But since "s390:64-bit" was at the end of that list, the -31-bit architecture was not reached. The patch swaps the elements of -that list on 64-bit platforms. - -bfd/ChangeLog: - - * cpu-s390.c (N): New macro. - (bfd_s390_31_arch): New. Define only if default target word size - is 64 bits. Otherwise define... - (bfd_390_64_arch): ...this. Make static. - (bfd_s390_arch): Define according to the default target word size. - Let the 'next' field point to the alternate arch. ---- - bfd/cpu-s390.c | 61 +++++++++++++++++++++++----------------------------------- - 1 file changed, 24 insertions(+), 37 deletions(-) - -diff --git a/bfd/cpu-s390.c b/bfd/cpu-s390.c -index 5fd3271..dbdec4a 100644 ---- a/bfd/cpu-s390.c -+++ b/bfd/cpu-s390.c -@@ -23,44 +23,31 @@ - #include "bfd.h" - #include "libbfd.h" - --const bfd_arch_info_type bfd_s390_64_arch = --{ -- 64, /* bits in a word */ -- 64, /* bits in an address */ -- 8, /* bits in a byte */ -- bfd_arch_s390, -- bfd_mach_s390_64, -- "s390", -- "s390:64-bit", -- 3, /* section alignment power */ --#if BFD_DEFAULT_TARGET_SIZE == 64 -- TRUE, /* the default */ --#else -- FALSE, /* the default */ --#endif -- bfd_default_compatible, -- bfd_default_scan, -- bfd_arch_default_fill, -- NULL --}; -+#define N(bits, number, print, is_default, next) \ -+ { \ -+ bits, /* bits in a word */ \ -+ bits, /* bits in an address */ \ -+ 8, /* bits in a byte */ \ -+ bfd_arch_s390, \ -+ number, \ -+ "s390", \ -+ print, \ -+ 3, /* section alignment power */ \ -+ is_default, \ -+ bfd_default_compatible, \ -+ bfd_default_scan, \ -+ bfd_arch_default_fill, \ -+ next \ -+ } - --const bfd_arch_info_type bfd_s390_arch = --{ -- 32, /* bits in a word */ -- 32, /* bits in an address */ -- 8, /* bits in a byte */ -- bfd_arch_s390, -- bfd_mach_s390_31, -- "s390", -- "s390:31-bit", -- 3, /* section alignment power */ - #if BFD_DEFAULT_TARGET_SIZE == 64 -- FALSE, /* the default */ -+static const bfd_arch_info_type bfd_s390_31_arch = -+ N (32, bfd_mach_s390_31, "s390:31-bit", FALSE, NULL); -+const bfd_arch_info_type bfd_s390_arch = -+ N (64, bfd_mach_s390_64, "s390:64-bit", TRUE, &bfd_s390_31_arch); - #else -- TRUE, /* the default */ -+static const bfd_arch_info_type bfd_s390_64_arch = -+ N (64, bfd_mach_s390_64, "s390:64-bit", FALSE, NULL); -+const bfd_arch_info_type bfd_s390_arch = -+ N (32, bfd_mach_s390_31, "s390:31-bit", TRUE, &bfd_s390_64_arch); - #endif -- bfd_default_compatible, -- bfd_default_scan, -- bfd_arch_default_fill, -- &bfd_s390_64_arch --}; --- -1.9.3 - diff --git a/gdb-upstream.patch b/gdb-upstream.patch deleted file mode 100644 index b735b8d..0000000 --- a/gdb-upstream.patch +++ /dev/null @@ -1,53 +0,0 @@ -commit 7a270e0c9ba0eb738a4c30258ab29c09963fcd4d -Author: Alexander Klimov -Date: Tue Jan 27 19:56:45 2015 +0200 - - Fix build failure in symfile.c::unmap_overlay_command (GCC5 bug) - - Compilation of (GDB) 7.9.50.20150127-cvs with (GCC) 5.0.0 20150127 - fails with - - In file included from symfile.c:32:0: - symfile.c: In function 'unmap_overlay_command': - objfiles.h:628:3: error: 'sec' may be used uninitialized in this - function [-Werror=maybe-uninitialized] - for (osect = objfile->sections; osect < objfile->sections_end; osect++) \ - ^ - symfile.c:3442:23: note: 'sec' was declared here - struct obj_section *sec; - ^ - cc1: all warnings being treated as errors - make[2]: *** [symfile.o] Error 1 - make[2]: Leaving directory `gdb/gdb' - - While the bug was reported to GCC as - , - the attached patch simply initializes sec with NULL. - - gdb/ChangeLog: - - * symfile.c (unmap_overlay_command): Initialize sec to NULL. - - Tested on x86_64-linux. - -### a/gdb/ChangeLog -### b/gdb/ChangeLog -## -1,3 +1,7 @@ -+2015-01-29 Joel Brobecker (tiny patch) -+ -+ * symfile.c (unmap_overlay_command): Initialize sec to NULL. -+ - 2015-01-27 Doug Evans - - * NEWS: Mention gdb.Objfile.username. ---- a/gdb/symfile.c -+++ b/gdb/symfile.c -@@ -3439,7 +3439,7 @@ static void - unmap_overlay_command (char *args, int from_tty) - { - struct objfile *objfile; -- struct obj_section *sec; -+ struct obj_section *sec = NULL; - - if (!overlay_debugging) - error (_("Overlay debugging not enabled. " diff --git a/gdb-vla-intel-stringbt-fix.patch b/gdb-vla-intel-stringbt-fix.patch index db3c2c0..3b6e771 100644 --- a/gdb-vla-intel-stringbt-fix.patch +++ b/gdb-vla-intel-stringbt-fix.patch @@ -31,30 +31,30 @@ Jan Content-Type: text/plain; charset=us-ascii Content-Disposition: inline; filename="vlastringonly.patch" -Index: gdb-7.8.50.20141228/gdb/gdbtypes.c +Index: gdb-7.9.50.20150520/gdb/gdbtypes.c =================================================================== ---- gdb-7.8.50.20141228.orig/gdb/gdbtypes.c 2015-01-08 18:15:18.475682523 +0100 -+++ gdb-7.8.50.20141228/gdb/gdbtypes.c 2015-01-08 18:39:01.423134700 +0100 -@@ -1684,6 +1684,7 @@ is_dynamic_type_internal (struct type *t - return !has_static_range (TYPE_RANGE_DATA (type)); +--- gdb-7.9.50.20150520.orig/gdb/gdbtypes.c 2015-05-31 16:14:04.164533833 +0200 ++++ gdb-7.9.50.20150520/gdb/gdbtypes.c 2015-05-31 16:14:05.844545344 +0200 +@@ -1851,6 +1851,7 @@ is_dynamic_type_internal (struct type *t + } case TYPE_CODE_ARRAY: + case TYPE_CODE_STRING: { gdb_assert (TYPE_NFIELDS (type) == 1); -@@ -1992,6 +1993,7 @@ resolve_dynamic_type_internal (struct ty +@@ -2192,6 +2193,7 @@ resolve_dynamic_type_internal (struct ty } case TYPE_CODE_ARRAY: + case TYPE_CODE_STRING: - resolved_type = resolve_dynamic_array (type, addr); + resolved_type = resolve_dynamic_array (type, addr_stack); break; -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90 +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90 2015-01-08 18:15:18.897684435 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90 2015-05-31 16:14:05.844545344 +0200 @@ -0,0 +1,24 @@ +! Copyright 2010 Free Software Foundation, Inc. +! @@ -80,10 +80,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f9 + real :: dummy + dummy = 1 +end subroutine bar -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp 2015-01-08 18:15:18.897684435 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp 2015-05-31 16:14:05.845545351 +0200 @@ -0,0 +1,39 @@ +# Copyright 2010 Free Software Foundation, Inc. + @@ -124,10 +124,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp +} + +gdb_test "bt" {foo \(string='hello'.*} -Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90 +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90 2015-01-08 18:15:18.897684435 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90 2015-05-31 16:14:05.845545351 +0200 @@ -0,0 +1,36 @@ +! Copyright 2010 Free Software Foundation, Inc. +! @@ -165,3 +165,17 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90 + end interface + call foo ('hello') +end +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-strings.exp +=================================================================== +--- gdb-7.9.50.20150520.orig/gdb/testsuite/gdb.fortran/vla-strings.exp 2015-05-31 16:14:04.167533854 +0200 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-strings.exp 2015-05-31 16:14:31.073718201 +0200 +@@ -33,9 +33,6 @@ gdb_continue_to_breakpoint "var_char-all + gdb_test "print var_char" \ + " = \\(PTR TO -> \\( character\\*10 \\)\\) ${hex}" \ + "print var_char after allocated first time" +-gdb_test "print *var_char" \ +- " = '\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000'" \ +- "print *var_char after allocated first time" + gdb_test "whatis var_char" "type = PTR TO -> \\( character\\*10 \\)" \ + "whatis var_char first time" + gdb_test "ptype var_char" "type = PTR TO -> \\( character\\*10 \\)" \ diff --git a/gdb-vla-intel.patch b/gdb-vla-intel.patch index 304d200..058635a 100644 --- a/gdb-vla-intel.patch +++ b/gdb-vla-intel.patch @@ -6,10 +6,10 @@ GIT snapshot: commit 511bff520372ffc10fa2ff569c176bdf1e6e475d -Index: gdb-7.8.90.20150126/gdb/c-valprint.c +Index: gdb-7.9.50.20150520/gdb/c-valprint.c =================================================================== ---- gdb-7.8.90.20150126.orig/gdb/c-valprint.c 2015-01-26 07:47:25.832758314 +0100 -+++ gdb-7.8.90.20150126/gdb/c-valprint.c 2015-01-26 07:47:42.394829861 +0100 +--- gdb-7.9.50.20150520.orig/gdb/c-valprint.c 2015-05-29 08:27:02.657717326 +0200 ++++ gdb-7.9.50.20150520/gdb/c-valprint.c 2015-05-29 08:27:06.253740209 +0200 @@ -537,7 +537,16 @@ c_value_print (struct value *val, struct { /* normal case */ @@ -28,12 +28,12 @@ Index: gdb-7.8.90.20150126/gdb/c-valprint.c fprintf_filtered (stream, ") "); } } -Index: gdb-7.8.90.20150126/gdb/dwarf2loc.h +Index: gdb-7.9.50.20150520/gdb/dwarf2loc.h =================================================================== ---- gdb-7.8.90.20150126.orig/gdb/dwarf2loc.h 2015-01-26 07:47:25.832758314 +0100 -+++ gdb-7.8.90.20150126/gdb/dwarf2loc.h 2015-01-26 07:47:42.395829865 +0100 -@@ -111,6 +111,11 @@ int dwarf2_evaluate_property (const stru - CORE_ADDR address, +--- gdb-7.9.50.20150520.orig/gdb/dwarf2loc.h 2015-05-29 08:27:02.658717333 +0200 ++++ gdb-7.9.50.20150520/gdb/dwarf2loc.h 2015-05-29 08:27:06.253740209 +0200 +@@ -131,6 +131,11 @@ int dwarf2_evaluate_property (const stru + struct property_addr_info *addr_stack, CORE_ADDR *value); +/* Checks if a dwarf location definition is valid. @@ -44,11 +44,11 @@ Index: gdb-7.8.90.20150126/gdb/dwarf2loc.h /* A helper for the compiler interface that compiles a single dynamic property to C code. -Index: gdb-7.8.90.20150126/gdb/dwarf2read.c +Index: gdb-7.9.50.20150520/gdb/dwarf2read.c =================================================================== ---- gdb-7.8.90.20150126.orig/gdb/dwarf2read.c 2015-01-26 07:47:25.845758371 +0100 -+++ gdb-7.8.90.20150126/gdb/dwarf2read.c 2015-01-26 07:48:05.833931116 +0100 -@@ -1855,6 +1855,12 @@ static void process_cu_includes (void); +--- gdb-7.9.50.20150520.orig/gdb/dwarf2read.c 2015-05-29 08:27:02.676717447 +0200 ++++ gdb-7.9.50.20150520/gdb/dwarf2read.c 2015-05-29 10:04:52.272600212 +0200 +@@ -1868,6 +1868,12 @@ static void process_cu_includes (void); static void check_producer (struct dwarf2_cu *cu); static void free_line_header_voidp (void *arg); @@ -61,7 +61,7 @@ Index: gdb-7.8.90.20150126/gdb/dwarf2read.c /* Various complaints about symbol reading that don't abort the process. */ -@@ -14354,29 +14360,92 @@ read_tag_string_type (struct die_info *d +@@ -14431,29 +14437,92 @@ read_tag_string_type (struct die_info *d struct gdbarch *gdbarch = get_objfile_arch (objfile); struct type *type, *range_type, *index_type, *char_type; struct attribute *attr; @@ -161,7 +161,7 @@ Index: gdb-7.8.90.20150126/gdb/dwarf2read.c char_type = language_string_char_type (cu->language_defn, gdbarch); type = create_string_type (NULL, char_type, range_type); -@@ -14693,13 +14762,15 @@ read_base_type (struct die_info *die, st +@@ -14776,13 +14845,15 @@ read_base_type (struct die_info *die, st return set_die_type (die, type, cu); } @@ -178,7 +178,7 @@ Index: gdb-7.8.90.20150126/gdb/dwarf2read.c { struct dwarf2_property_baton *baton; struct obstack *obstack = &cu->objfile->objfile_obstack; -@@ -14712,8 +14783,25 @@ attr_to_dynamic_prop (const struct attri +@@ -14795,8 +14866,25 @@ attr_to_dynamic_prop (const struct attri baton = obstack_alloc (obstack, sizeof (*baton)); baton->referenced_type = NULL; baton->locexpr.per_cu = cu->per_cu; @@ -206,38 +206,38 @@ Index: gdb-7.8.90.20150126/gdb/dwarf2read.c prop->data.baton = baton; prop->kind = PROP_LOCEXPR; gdb_assert (prop->data.baton != NULL); -@@ -14743,8 +14831,28 @@ attr_to_dynamic_prop (const struct attri - baton = obstack_alloc (obstack, sizeof (*baton)); - baton->referenced_type = die_type (target_die, target_cu); - baton->locexpr.per_cu = cu->per_cu; -- baton->locexpr.size = DW_BLOCK (target_attr)->size; -- baton->locexpr.data = DW_BLOCK (target_attr)->data; +@@ -14832,8 +14920,28 @@ attr_to_dynamic_prop (const struct attri + baton = obstack_alloc (obstack, sizeof (*baton)); + baton->referenced_type = die_type (target_die, target_cu); + baton->locexpr.per_cu = cu->per_cu; +- baton->locexpr.size = DW_BLOCK (target_attr)->size; +- baton->locexpr.data = DW_BLOCK (target_attr)->data; + -+ if (additional_data != NULL && additional_data_size > 0) -+ { -+ gdb_byte *data; ++ if (additional_data != NULL && additional_data_size > 0) ++ { ++ gdb_byte *data; + -+ data = obstack_alloc (&cu->objfile->objfile_obstack, -+ DW_BLOCK (target_attr)->size + additional_data_size); -+ memcpy (data, DW_BLOCK (target_attr)->data, -+ DW_BLOCK (target_attr)->size); -+ memcpy (data + DW_BLOCK (target_attr)->size, -+ additional_data, additional_data_size); ++ data = obstack_alloc (&cu->objfile->objfile_obstack, ++ DW_BLOCK (target_attr)->size + additional_data_size); ++ memcpy (data, DW_BLOCK (target_attr)->data, ++ DW_BLOCK (target_attr)->size); ++ memcpy (data + DW_BLOCK (target_attr)->size, ++ additional_data, additional_data_size); + -+ baton->locexpr.data = data; -+ baton->locexpr.size = (DW_BLOCK (target_attr)->size -+ + additional_data_size); -+ } -+ else -+ { -+ baton->locexpr.data = DW_BLOCK (target_attr)->data; -+ baton->locexpr.size = DW_BLOCK (target_attr)->size; -+ } ++ baton->locexpr.data = data; ++ baton->locexpr.size = (DW_BLOCK (target_attr)->size ++ + additional_data_size); ++ } ++ else ++ { ++ baton->locexpr.data = DW_BLOCK (target_attr)->data; ++ baton->locexpr.size = DW_BLOCK (target_attr)->size; ++ } + - prop->data.baton = baton; - prop->kind = PROP_LOCEXPR; - gdb_assert (prop->data.baton != NULL); -@@ -14779,7 +14887,7 @@ read_subrange_type (struct die_info *die + prop->data.baton = baton; + prop->kind = PROP_LOCEXPR; + gdb_assert (prop->data.baton != NULL); +@@ -14887,7 +14995,7 @@ read_subrange_type (struct die_info *die struct type *base_type, *orig_base_type; struct type *range_type; struct attribute *attr; @@ -246,7 +246,7 @@ Index: gdb-7.8.90.20150126/gdb/dwarf2read.c int low_default_is_valid; int high_bound_is_count = 0; const char *name; -@@ -14799,7 +14907,9 @@ read_subrange_type (struct die_info *die +@@ -14907,7 +15015,9 @@ read_subrange_type (struct die_info *die low.kind = PROP_CONST; high.kind = PROP_CONST; @@ -256,7 +256,7 @@ Index: gdb-7.8.90.20150126/gdb/dwarf2read.c /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow omitting DW_AT_lower_bound. */ -@@ -14832,19 +14942,26 @@ read_subrange_type (struct die_info *die +@@ -14940,19 +15050,26 @@ read_subrange_type (struct die_info *die break; } @@ -286,7 +286,7 @@ Index: gdb-7.8.90.20150126/gdb/dwarf2read.c { /* If bounds are constant do the final calculation here. */ if (low.kind == PROP_CONST && high.kind == PROP_CONST) -@@ -14908,7 +15025,7 @@ read_subrange_type (struct die_info *die +@@ -15016,7 +15133,7 @@ read_subrange_type (struct die_info *die && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask)) high.data.const_val |= negative_mask; @@ -295,18 +295,10 @@ Index: gdb-7.8.90.20150126/gdb/dwarf2read.c if (high_bound_is_count) TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1; -@@ -21994,7 +22111,44 @@ set_die_type (struct die_info *die, stru +@@ -22128,9 +22245,37 @@ set_die_type (struct die_info *die, stru + && !HAVE_GNAT_AUX_INFO (type)) + INIT_GNAT_SPECIFIC (type); - /* Read DW_AT_data_location and set in type. */ - attr = dwarf2_attr (die, DW_AT_data_location, cu); -- if (attr_to_dynamic_prop (attr, die, cu, &prop)) -+ if (attr_to_dynamic_prop (attr, die, cu, &prop, NULL, 0)) -+ { -+ TYPE_DATA_LOCATION (type) -+ = obstack_alloc (&objfile->objfile_obstack, sizeof (prop)); -+ *TYPE_DATA_LOCATION (type) = prop; -+ } -+ + /* Read DW_AT_allocated and set in type. */ + attr = dwarf2_attr (die, DW_AT_allocated, cu); + if (attr_form_is_block (attr)) @@ -335,16 +327,17 @@ Index: gdb-7.8.90.20150126/gdb/dwarf2read.c + } + } + -+ /* Read DW_AT_data_location and set in type. */ -+ attr = dwarf2_attr (die, DW_AT_data_location, cu); + /* Read DW_AT_data_location and set in type. */ + attr = dwarf2_attr (die, DW_AT_data_location, cu); +- if (attr_to_dynamic_prop (attr, die, cu, &prop)) + if (attr_to_dynamic_prop (attr, die, cu, &prop, NULL, 0)) - { - TYPE_DATA_LOCATION (type) - = obstack_alloc (&objfile->objfile_obstack, sizeof (prop)); -Index: gdb-7.8.90.20150126/gdb/f-typeprint.c + add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile); + + if (dwarf2_per_objfile->die_type_hash == NULL) +Index: gdb-7.9.50.20150520/gdb/f-typeprint.c =================================================================== ---- gdb-7.8.90.20150126.orig/gdb/f-typeprint.c 2015-01-26 07:47:25.846758375 +0100 -+++ gdb-7.8.90.20150126/gdb/f-typeprint.c 2015-01-26 07:47:42.402829895 +0100 +--- gdb-7.9.50.20150520.orig/gdb/f-typeprint.c 2015-05-29 08:27:02.678717460 +0200 ++++ gdb-7.9.50.20150520/gdb/f-typeprint.c 2015-05-29 08:27:06.261740260 +0200 @@ -30,6 +30,7 @@ #include "gdbcore.h" #include "target.h" @@ -429,10 +422,10 @@ Index: gdb-7.8.90.20150126/gdb/f-typeprint.c if (arrayprint_recurse_level == 1) fprintf_filtered (stream, ")"); else -Index: gdb-7.8.90.20150126/gdb/f-valprint.c +Index: gdb-7.9.50.20150520/gdb/f-valprint.c =================================================================== ---- gdb-7.8.90.20150126.orig/gdb/f-valprint.c 2015-01-26 07:47:25.847758379 +0100 -+++ gdb-7.8.90.20150126/gdb/f-valprint.c 2015-01-26 07:47:42.403829900 +0100 +--- gdb-7.9.50.20150520.orig/gdb/f-valprint.c 2015-05-29 08:26:49.567634019 +0200 ++++ gdb-7.9.50.20150520/gdb/f-valprint.c 2015-05-29 08:27:06.262740266 +0200 @@ -36,8 +36,6 @@ extern void _initialize_f_valprint (void); @@ -619,11 +612,11 @@ Index: gdb-7.8.90.20150126/gdb/f-valprint.c if (index != TYPE_NFIELDS (type) - 1) fputs_filtered (", ", stream); } -Index: gdb-7.8.90.20150126/gdb/gdbtypes.c +Index: gdb-7.9.50.20150520/gdb/gdbtypes.c =================================================================== ---- gdb-7.8.90.20150126.orig/gdb/gdbtypes.c 2015-01-26 07:47:25.850758392 +0100 -+++ gdb-7.8.90.20150126/gdb/gdbtypes.c 2015-01-26 07:47:42.404829904 +0100 -@@ -815,7 +815,8 @@ allocate_stub_method (struct type *type) +--- gdb-7.9.50.20150520.orig/gdb/gdbtypes.c 2015-05-29 08:27:02.683717492 +0200 ++++ gdb-7.9.50.20150520/gdb/gdbtypes.c 2015-05-29 10:54:36.236498749 +0200 +@@ -824,7 +824,8 @@ allocate_stub_method (struct type *type) struct type * create_range_type (struct type *result_type, struct type *index_type, const struct dynamic_prop *low_bound, @@ -633,7 +626,7 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.c { if (result_type == NULL) result_type = alloc_type_copy (index_type); -@@ -830,6 +831,7 @@ create_range_type (struct type *result_t +@@ -839,6 +840,7 @@ create_range_type (struct type *result_t TYPE_ZALLOC (result_type, sizeof (struct range_bounds)); TYPE_RANGE_DATA (result_type)->low = *low_bound; TYPE_RANGE_DATA (result_type)->high = *high_bound; @@ -641,7 +634,7 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.c if (low_bound->kind == PROP_CONST && low_bound->data.const_val >= 0) TYPE_UNSIGNED (result_type) = 1; -@@ -858,7 +860,7 @@ struct type * +@@ -867,7 +869,7 @@ struct type * create_static_range_type (struct type *result_type, struct type *index_type, LONGEST low_bound, LONGEST high_bound) { @@ -650,7 +643,7 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.c low.kind = PROP_CONST; low.data.const_val = low_bound; -@@ -866,7 +868,11 @@ create_static_range_type (struct type *r +@@ -875,7 +877,11 @@ create_static_range_type (struct type *r high.kind = PROP_CONST; high.data.const_val = high_bound; @@ -663,7 +656,7 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.c return result_type; } -@@ -1020,18 +1026,24 @@ create_array_type_with_stride (struct ty +@@ -1068,18 +1074,24 @@ create_array_type_with_stride (struct ty TYPE_CODE (result_type) = TYPE_CODE_ARRAY; TYPE_TARGET_TYPE (result_type) = element_type; @@ -690,7 +683,7 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.c else if (bit_stride > 0) TYPE_LENGTH (result_type) = (bit_stride * (high_bound - low_bound + 1) + 7) / 8; -@@ -1630,12 +1642,31 @@ stub_noname_complaint (void) +@@ -1789,12 +1801,31 @@ stub_noname_complaint (void) static int is_dynamic_type_internal (struct type *type, int top_level) { @@ -722,7 +715,7 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.c /* Types that have a dynamic TYPE_DATA_LOCATION are considered dynamic, even if the type itself is statically defined. From a user's point of view, this may appear counter-intuitive; -@@ -1656,11 +1687,19 @@ is_dynamic_type_internal (struct type *t +@@ -1823,11 +1854,19 @@ is_dynamic_type_internal (struct type *t { gdb_assert (TYPE_NFIELDS (type) == 1); @@ -745,14 +738,15 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.c } case TYPE_CODE_STRUCT: -@@ -1673,6 +1712,17 @@ is_dynamic_type_internal (struct type *t +@@ -1840,6 +1879,18 @@ is_dynamic_type_internal (struct type *t && is_dynamic_type_internal (TYPE_FIELD_TYPE (type, i), 0)) return 1; } + case TYPE_CODE_PTR: + { + if (TYPE_TARGET_TYPE (type) -+ && TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRING) ++ && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRING ++ || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY)) + return is_dynamic_type (check_typedef (TYPE_TARGET_TYPE (type))); + + return 0; @@ -763,8 +757,8 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.c break; } -@@ -1701,7 +1751,8 @@ resolve_dynamic_range (struct type *dyn_ - struct type *static_range_type; +@@ -1869,7 +1920,8 @@ resolve_dynamic_range (struct type *dyn_ + struct type *static_range_type, *static_target_type; const struct dynamic_prop *prop; const struct dwarf2_locexpr_baton *baton; - struct dynamic_prop low_bound, high_bound; @@ -773,28 +767,30 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.c gdb_assert (TYPE_CODE (dyn_range_type) == TYPE_CODE_RANGE); -@@ -1732,10 +1783,17 @@ resolve_dynamic_range (struct type *dyn_ - high_bound.kind = PROP_UNDEFINED; +@@ -1901,12 +1953,19 @@ resolve_dynamic_range (struct type *dyn_ high_bound.data.const_val = 0; } -+ + + prop = &TYPE_RANGE_DATA (dyn_range_type)->stride; -+ if (dwarf2_evaluate_property (prop, addr, &value)) ++ if (dwarf2_evaluate_property (prop, addr_stack, &value)) + { + stride.kind = PROP_CONST; + stride.data.const_val = value; + } - ++ + static_target_type +- = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (dyn_range_type), ++ = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (range_copy), + addr_stack, 0); - static_range_type = create_range_type (copy_type (dyn_range_type), -- TYPE_TARGET_TYPE (dyn_range_type), -- &low_bound, &high_bound); + static_range_type = create_range_type (range_copy, -+ TYPE_TARGET_TYPE (range_copy), + static_target_type, +- &low_bound, &high_bound); + &low_bound, &high_bound, &stride); TYPE_RANGE_DATA (static_range_type)->flag_bound_evaluated = 1; return static_range_type; } -@@ -1751,23 +1809,46 @@ resolve_dynamic_array (struct type *type +@@ -1923,23 +1982,47 @@ resolve_dynamic_array (struct type *type struct type *elt_type; struct type *range_type; struct type *ary_dim; @@ -807,17 +803,17 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.c elt_type = type; range_type = check_typedef (TYPE_INDEX_TYPE (elt_type)); - range_type = resolve_dynamic_range (range_type, addr); + range_type = resolve_dynamic_range (range_type, addr_stack); + prop = TYPE_ALLOCATED_PROP (type); -+ if (dwarf2_evaluate_property (prop, addr, &value)) ++ if (dwarf2_evaluate_property (prop, addr_stack, &value)) + { + TYPE_ALLOCATED_PROP (copy)->kind = PROP_CONST; + TYPE_ALLOCATED_PROP (copy)->data.const_val = value; + } + + prop = TYPE_ASSOCIATED_PROP (type); -+ if (dwarf2_evaluate_property (prop, addr, &value)) ++ if (dwarf2_evaluate_property (prop, addr_stack, &value)) + { + TYPE_ASSOCIATED_PROP (copy)->kind = PROP_CONST; + TYPE_ASSOCIATED_PROP (copy)->data.const_val = value; @@ -826,64 +822,32 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.c ary_dim = check_typedef (TYPE_TARGET_TYPE (elt_type)); - if (ary_dim != NULL && TYPE_CODE (ary_dim) == TYPE_CODE_ARRAY) -- elt_type = resolve_dynamic_array (TYPE_TARGET_TYPE (type), addr); +- elt_type = resolve_dynamic_array (TYPE_TARGET_TYPE (type), addr_stack); + if (ary_dim != NULL && (TYPE_CODE (ary_dim) == TYPE_CODE_ARRAY + || TYPE_CODE (ary_dim) == TYPE_CODE_STRING)) -+ elt_type = resolve_dynamic_array (TYPE_TARGET_TYPE (copy), addr); ++ elt_type = resolve_dynamic_array (TYPE_TARGET_TYPE (copy), addr_stack); else elt_type = TYPE_TARGET_TYPE (type); -- return create_array_type (copy_type (type), -- elt_type, -- range_type); -+ if (TYPE_CODE (type) == TYPE_CODE_STRING) +- return create_array_type_with_stride (copy_type (type), +- elt_type, range_type, +- TYPE_FIELD_BITSIZE (type, 0)); ++ if (TYPE_CODE (type) == TYPE_CODE_STRING ++ && TYPE_FIELD_BITSIZE (type, 0) == 0) + return create_string_type (copy, + elt_type, + range_type); + else -+ return create_array_type (copy, ++ return create_array_type_with_stride (copy, + elt_type, -+ range_type); ++ range_type, TYPE_FIELD_BITSIZE (type, 0)); } /* Resolve dynamic bounds of members of the union TYPE to static -@@ -1938,6 +2019,25 @@ resolve_dynamic_type_internal (struct ty - else - TYPE_DATA_LOCATION (resolved_type) = NULL; +@@ -4453,6 +4536,20 @@ copy_type_recursive (struct objfile *obj + TYPE_DYN_PROP_LIST (type)); -+ /* Resolve data_location attribute. */ -+ prop = TYPE_DATA_LOCATION (resolved_type); -+ if (dwarf2_evaluate_property (prop, addr, &value)) -+ { -+ struct type *range_type = TYPE_INDEX_TYPE (resolved_type); -+ -+ /* Adjust the data location with the value of byte stride if set, which -+ can describe the separation between successive elements along the -+ dimension. */ -+ if (TYPE_BYTE_STRIDE (range_type) < 0) -+ value += (TYPE_HIGH_BOUND (range_type) - TYPE_LOW_BOUND (range_type)) -+ * TYPE_BYTE_STRIDE (range_type); -+ -+ TYPE_DATA_LOCATION_ADDR (resolved_type) = value; -+ TYPE_DATA_LOCATION_KIND (resolved_type) = PROP_CONST; -+ } -+ else -+ TYPE_DATA_LOCATION (resolved_type) = NULL; -+ - return resolved_type; - } -@@ -4174,6 +4274,27 @@ copy_type_recursive (struct objfile *obj - sizeof (struct dynamic_prop)); - } - -+ /* Copy the data location information. */ -+ if (TYPE_DATA_LOCATION (type) != NULL) -+ { -+ TYPE_DATA_LOCATION (new_type) = xmalloc (sizeof (struct dynamic_prop)); -+ *TYPE_DATA_LOCATION (new_type) = *TYPE_DATA_LOCATION (type); -+ } -+ + /* Copy allocated information. */ + if (TYPE_ALLOCATED_PROP (type) != NULL) + { @@ -901,8 +865,8 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.c /* Copy pointers to other types. */ if (TYPE_TARGET_TYPE (type)) TYPE_TARGET_TYPE (new_type) = -@@ -4227,6 +4348,44 @@ copy_type (const struct type *type) - sizeof (struct dynamic_prop)); +@@ -4494,6 +4591,35 @@ copy_type_recursive (struct objfile *obj + gdb_assert_not_reached ("bad type_specific_kind"); } + if (TYPE_ALLOCATED_PROP (type)) @@ -923,15 +887,6 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.c + sizeof (struct dynamic_prop)); + } + -+ if (TYPE_DATA_LOCATION (type)) -+ { -+ TYPE_DATA_LOCATION (new_type) -+ = OBSTACK_ZALLOC (&TYPE_OWNER (type).objfile->objfile_obstack, -+ struct dynamic_prop); -+ memcpy (TYPE_DATA_LOCATION (new_type), TYPE_DATA_LOCATION (type), -+ sizeof (struct dynamic_prop)); -+ } -+ + if (TYPE_NFIELDS (type)) + { + int nfields = TYPE_NFIELDS (type); @@ -945,26 +900,41 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.c + return new_type; } - -Index: gdb-7.8.90.20150126/gdb/gdbtypes.h + +@@ -4519,6 +4645,14 @@ copy_type (const struct type *type) + TYPE_DYN_PROP_LIST (new_type) + = copy_dynamic_prop_list (&TYPE_OBJFILE (type) -> objfile_obstack, + TYPE_DYN_PROP_LIST (type)); ++ if (TYPE_ALLOCATED_PROP (type) != NULL) ++ TYPE_ALLOCATED_PROP (new_type) = obstack_copy ++ (&TYPE_OBJFILE (type)->objfile_obstack, TYPE_ALLOCATED_PROP (type), ++ sizeof (*TYPE_ALLOCATED_PROP (type))); ++ if (TYPE_ASSOCIATED_PROP (type) != NULL) ++ TYPE_ASSOCIATED_PROP (new_type) = obstack_copy ++ (&TYPE_OBJFILE (type)->objfile_obstack, TYPE_ASSOCIATED_PROP (type), ++ sizeof (*TYPE_ASSOCIATED_PROP (type))); + + return new_type; + } +Index: gdb-7.9.50.20150520/gdb/gdbtypes.h =================================================================== ---- gdb-7.8.90.20150126.orig/gdb/gdbtypes.h 2015-01-26 07:47:25.852758401 +0100 -+++ gdb-7.8.90.20150126/gdb/gdbtypes.h 2015-01-26 07:47:42.405829908 +0100 -@@ -660,6 +660,10 @@ struct main_type +--- gdb-7.9.50.20150520.orig/gdb/gdbtypes.h 2015-05-29 08:27:02.685717504 +0200 ++++ gdb-7.9.50.20150520/gdb/gdbtypes.h 2015-05-29 08:46:08.862924052 +0200 +@@ -569,6 +569,10 @@ struct range_bounds - struct dynamic_prop high; + struct dynamic_prop high; -+ /* * Stride of range. */ ++ /* * Stride of range. */ + -+ struct dynamic_prop stride; ++ struct dynamic_prop stride; + - /* True if HIGH range bound contains the number of elements in the - subrange. This affects how the final hight bound is computed. */ + /* True if HIGH range bound contains the number of elements in the + subrange. This affects how the final hight bound is computed. */ -@@ -720,6 +724,18 @@ struct main_type - this field yields to the location of the data for an object. */ +@@ -741,6 +745,18 @@ struct main_type - struct dynamic_prop *data_location; + /* * Contains all dynamic type properties. */ + struct dynamic_prop_list *dyn_prop_list; + + /* Structure for DW_AT_allocated. + The presence of this attribute indicates that the object of the type @@ -980,7 +950,7 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.h }; /* * A ``struct type'' describes a particular instance of a type, with -@@ -1198,6 +1214,39 @@ extern void allocate_gnat_aux_type (stru +@@ -1255,6 +1271,15 @@ extern void allocate_gnat_aux_type (stru TYPE_RANGE_DATA(range_type)->high.kind #define TYPE_LOW_BOUND_KIND(range_type) \ TYPE_RANGE_DATA(range_type)->low.kind @@ -993,16 +963,13 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.h +#define TYPE_BYTE_STRIDE_KIND(range_type) \ + TYPE_RANGE_DATA(range_type)->stride.kind + -+ -+/* Attribute accessors for the type data location. */ -+#define TYPE_DATA_LOCATION(thistype) \ -+ TYPE_MAIN_TYPE(thistype)->data_location -+#define TYPE_DATA_LOCATION_BATON(thistype) \ -+ TYPE_DATA_LOCATION (thistype)->data.baton -+#define TYPE_DATA_LOCATION_ADDR(thistype) \ -+ TYPE_DATA_LOCATION (thistype)->data.const_val -+#define TYPE_DATA_LOCATION_KIND(thistype) \ -+ TYPE_DATA_LOCATION (thistype)->kind + + /* Property accessors for the type data location. */ + #define TYPE_DATA_LOCATION(thistype) \ +@@ -1265,6 +1290,20 @@ extern void allocate_gnat_aux_type (stru + TYPE_DATA_LOCATION (thistype)->data.const_val + #define TYPE_DATA_LOCATION_KIND(thistype) \ + TYPE_DATA_LOCATION (thistype)->kind +#define TYPE_ALLOCATED_PROP(thistype) TYPE_MAIN_TYPE(thistype)->allocated +#define TYPE_ASSOCIATED_PROP(thistype) TYPE_MAIN_TYPE(thistype)->associated + @@ -1018,9 +985,9 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.h + && TYPE_ASSOCIATED_PROP (t)->kind == PROP_CONST \ + && !TYPE_ASSOCIATED_PROP (t)->data.const_val) - /* Attribute accessors for the type data location. */ - #define TYPE_DATA_LOCATION(thistype) \ -@@ -1215,6 +1264,9 @@ extern void allocate_gnat_aux_type (stru + /* Attribute accessors for dynamic properties. */ + #define TYPE_DYN_PROP_LIST(thistype) \ +@@ -1283,6 +1322,9 @@ extern void allocate_gnat_aux_type (stru TYPE_HIGH_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype)) #define TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED(arraytype) \ TYPE_LOW_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype)) @@ -1030,7 +997,7 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.h #define TYPE_ARRAY_UPPER_BOUND_VALUE(arraytype) \ (TYPE_HIGH_BOUND(TYPE_INDEX_TYPE((arraytype)))) -@@ -1685,6 +1737,7 @@ extern struct type *create_array_type_wi +@@ -1764,6 +1806,7 @@ extern struct type *create_array_type_wi extern struct type *create_range_type (struct type *, struct type *, const struct dynamic_prop *, @@ -1038,10 +1005,10 @@ Index: gdb-7.8.90.20150126/gdb/gdbtypes.h const struct dynamic_prop *); extern struct type *create_array_type (struct type *, struct type *, -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp 2015-01-26 07:47:42.405829908 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp 2015-05-29 08:27:06.266740292 +0200 @@ -0,0 +1,65 @@ +# Copyright 2014 Free Software Foundation, Inc. + @@ -1108,10 +1075,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp +gdb_continue_to_breakpoint "vla2-deallocated" +gdb_test "print l" " = \\.FALSE\\." "print vla2 deallocated" +gdb_test "print vla2" " = " "print deallocated vla2" -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-datatypes.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-datatypes.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-datatypes.exp 2015-01-26 07:47:42.405829908 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-datatypes.exp 2015-05-29 08:27:06.266740292 +0200 @@ -0,0 +1,82 @@ +# Copyright 2014 Free Software Foundation, Inc. + @@ -1195,10 +1162,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-datatypes.exp + "print logicalvla(5,5,5) (2nd)" +gdb_test "print charactervla(5,5,5)" " = 'X'" \ + "print charactervla(5,5,5) (2nd)" -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-datatypes.f90 +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-datatypes.f90 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-datatypes.f90 2015-01-26 07:47:42.405829908 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-datatypes.f90 2015-05-29 08:27:06.266740292 +0200 @@ -0,0 +1,51 @@ +! Copyright 2014 Free Software Foundation, Inc. +! @@ -1251,10 +1218,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-datatypes.f90 + ! dummy statement for bp + l = .FALSE. ! vlas-modified +end program vla_primitives -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-func.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-func.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-func.exp 2015-01-26 07:47:42.406829913 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-func.exp 2015-05-29 08:27:06.266740292 +0200 @@ -0,0 +1,61 @@ +# Copyright 2014 Free Software Foundation, Inc. + @@ -1317,10 +1284,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-func.exp + "print vla3 (after func2)" +gdb_test "ptype vla3" "type = integer\\\(kind=4\\\) \\\(10\\\)" \ + "ptype vla3 (after func2)" -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-func.f90 +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-func.f90 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-func.f90 2015-01-26 07:47:42.406829913 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-func.f90 2015-05-29 08:27:06.267740298 +0200 @@ -0,0 +1,71 @@ +! Copyright 2014 Free Software Foundation, Inc. +! @@ -1393,10 +1360,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-func.f90 + + ret = .TRUE. ! func2-returned +end program vla_func -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-history.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-history.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-history.exp 2015-01-26 07:47:42.406829913 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-history.exp 2015-05-29 08:27:06.267740298 +0200 @@ -0,0 +1,62 @@ +# Copyright 2014 Free Software Foundation, Inc. + @@ -1460,10 +1427,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-history.exp +# Try to access history values for vla values. +gdb_test "print \$9" " = 1311" "print \$9" +gdb_test "print \$10" " = 1001" "print \$10" -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp 2015-01-26 07:47:42.406829913 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp 2015-05-29 08:27:06.267740298 +0200 @@ -0,0 +1,87 @@ +# Copyright 2014 Free Software Foundation, Inc. + @@ -1552,10 +1519,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp + "ptype array1(100) (arbitrary length)" +gdb_test "ptype array2(4,100)" "type = integer\\\(kind=4\\\)" \ + "ptype array2(4,100) (arbitrary length)" -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-ptype.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-ptype.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-ptype.exp 2015-01-26 07:47:42.406829913 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-ptype.exp 2015-05-29 08:27:06.267740298 +0200 @@ -0,0 +1,96 @@ +# Copyright 2014 Free Software Foundation, Inc. + @@ -1653,10 +1620,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-ptype.exp +gdb_test "ptype vla2(5, 45, 20)" \ + "no such vector element because not allocated" \ + "ptype vla2(5, 45, 20) not allocated" -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-sizeof.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-sizeof.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-sizeof.exp 2015-01-26 07:47:42.406829913 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-sizeof.exp 2015-05-29 08:27:06.267740298 +0200 @@ -0,0 +1,46 @@ +# Copyright 2014 Free Software Foundation, Inc. + @@ -1704,10 +1671,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-sizeof.exp +gdb_breakpoint [gdb_get_line_number "pvla-associated"] +gdb_continue_to_breakpoint "pvla-associated" +gdb_test "print sizeof(pvla)" " = 4000" "print sizeof associated pvla" -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-stride.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-stride.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-stride.exp 2015-01-26 07:47:42.407829917 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-stride.exp 2015-05-29 08:27:06.267740298 +0200 @@ -0,0 +1,44 @@ +# Copyright 2014 Free Software Foundation, Inc. + @@ -1753,10 +1720,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-stride.exp +gdb_continue_to_breakpoint "single-element" +gdb_test "print pvla" " = \\\(5\\\)" "print single-element" +gdb_test "print pvla(1)" " = 5" "print one single-element" -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-stride.f90 +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-stride.f90 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-stride.f90 2015-01-26 07:47:42.407829917 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-stride.f90 2015-05-29 08:27:06.268740305 +0200 @@ -0,0 +1,30 @@ +! Copyright 2014 Free Software Foundation, Inc. +! @@ -1788,10 +1755,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-stride.f90 + + pvla => null() ! single-element +end program vla_stride -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-strings.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-strings.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-strings.exp 2015-01-26 07:47:42.407829917 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-strings.exp 2015-05-29 08:27:06.268740305 +0200 @@ -0,0 +1,104 @@ +# Copyright 2014 Free Software Foundation, Inc. + @@ -1897,10 +1864,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-strings.exp + "whatis var_char_p after associated" +gdb_test "ptype var_char_p" "type = PTR TO -> \\( character\\*7 \\)" \ + "ptype var_char_p after associated" -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-strings.f90 +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-strings.f90 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-strings.f90 2015-01-26 07:47:42.407829917 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-strings.f90 2015-05-31 15:25:01.305615755 +0200 @@ -0,0 +1,40 @@ +! Copyright 2014 Free Software Foundation, Inc. +! @@ -1942,10 +1909,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-strings.f90 + var_char_p => null() + l = associated(var_char_p) ! var_char_p-not-associated +end program vla_strings -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-sub.f90 +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-sub.f90 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-sub.f90 2015-01-26 07:47:42.407829917 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-sub.f90 2015-05-29 08:27:06.268740305 +0200 @@ -0,0 +1,82 @@ +! Copyright 2014 Free Software Foundation, Inc. +! @@ -2029,10 +1996,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-sub.f90 + + call bar(sub_arr3, sub_arr1) +end program vla_sub -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp 2015-01-26 07:47:42.407829917 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp 2015-05-29 08:27:06.268740305 +0200 @@ -0,0 +1,35 @@ +# Copyright 2014 Free Software Foundation, Inc. + @@ -2069,10 +2036,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp +gdb_test "p array1(100)" " = 100" "print arbitary array1(100)" +gdb_test "p array2(4,10)" " = 1" "print arbitary array2(4,10)" +gdb_test "p array2(4,100)" " = 1" "print arbitary array2(4,100)" -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp 2015-01-26 07:47:42.407829917 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp 2015-05-29 08:27:06.268740305 +0200 @@ -0,0 +1,49 @@ +# Copyright 2014 Free Software Foundation, Inc. + @@ -2123,10 +2090,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp +gdb_test "p sub_arr2(1, 1, 1)" " = 30" "sub_arr2(1, 1, 1) after finish" +gdb_test "p sub_arr2(2, 1, 1)" " = 20" "sub_arr2(2, 1, 1) after finish" + -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-value-sub.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub.exp 2015-01-26 07:47:42.408829922 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-value-sub.exp 2015-05-29 08:27:06.269740311 +0200 @@ -0,0 +1,90 @@ +# Copyright 2014 Free Software Foundation, Inc. + @@ -2218,10 +2185,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub.exp + "set array(2,2,2) to 20 in subroutine (passed vla)" +gdb_test "print array2" " = \\( *\\( *\\( *30, *20, *3,\[()3, .\]*\\)" \ + "print array2 in foo after it was mofified in debugger (passed vla)" -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-value.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value.exp 2015-01-26 07:47:42.408829922 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla-value.exp 2015-05-29 08:27:06.269740311 +0200 @@ -0,0 +1,148 @@ +# Copyright 2014 Free Software Foundation, Inc. + @@ -2371,10 +2338,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value.exp +gdb_continue_to_breakpoint "pvla-deassociated" +gdb_test "print \$mypvar(1,3,8)" " = 1001" \ + "print \$mypvar(1,3,8) after deallocated" -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla.f90 +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla.f90 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla.f90 2015-01-26 07:47:42.408829922 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.fortran/vla.f90 2015-05-29 08:27:06.269740311 +0200 @@ -0,0 +1,56 @@ +! Copyright 2014 Free Software Foundation, Inc. +! @@ -2432,11 +2399,11 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla.f90 + allocate (vla3 (2,2)) ! vla2-deallocated + vla3(:,:) = 13 +end program vla -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.mi/mi-vla-fortran.exp +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.mi/mi-vla-fortran.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.mi/mi-vla-fortran.exp 2015-01-26 07:47:42.408829922 +0100 -@@ -0,0 +1,182 @@ ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.mi/mi-vla-fortran.exp 2015-05-29 11:13:53.951656591 +0200 +@@ -0,0 +1,181 @@ +# Copyright 2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify @@ -2507,8 +2474,7 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.mi/mi-vla-fortran.exp +mi_run_cmd +mi_expect_stop "breakpoint-hit" "vla" "" ".*vla.f90" "$bp_lineno" \ + { "" "disp=\"del\"" } "run to breakpoint at line $bp_lineno" -+mi_gdb_test "510-data-evaluate-expression vla1" \ -+ "510\\^done,value=\"\\(0, 0, 0, 0, 0\\)\"" "evaluate allocated vla" ++# Content of 'vla1' is uninitialized here. + +mi_create_varobj_checked vla1_allocated vla1 "real\\\(kind=4\\\) \\\(5\\\)" \ + "create local variable vla1_allocated" @@ -2619,10 +2585,10 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.mi/mi-vla-fortran.exp + +mi_gdb_exit +return 0 -Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.mi/vla.f90 +Index: gdb-7.9.50.20150520/gdb/testsuite/gdb.mi/vla.f90 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.mi/vla.f90 2015-01-26 07:47:42.409829926 +0100 ++++ gdb-7.9.50.20150520/gdb/testsuite/gdb.mi/vla.f90 2015-05-29 08:27:06.270740317 +0200 @@ -0,0 +1,42 @@ +! Copyright 2014 Free Software Foundation, Inc. +! @@ -2666,11 +2632,11 @@ Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.mi/vla.f90 + pvla2 => null() + l = associated(pvla2) ! pvla2-set-to-null +end program vla -Index: gdb-7.8.90.20150126/gdb/typeprint.c +Index: gdb-7.9.50.20150520/gdb/typeprint.c =================================================================== ---- gdb-7.8.90.20150126.orig/gdb/typeprint.c 2015-01-26 07:47:25.856758418 +0100 -+++ gdb-7.8.90.20150126/gdb/typeprint.c 2015-01-26 07:47:42.409829926 +0100 -@@ -456,6 +456,13 @@ whatis_exp (char *exp, int show) +--- gdb-7.9.50.20150520.orig/gdb/typeprint.c 2015-05-29 08:27:02.688717523 +0200 ++++ gdb-7.9.50.20150520/gdb/typeprint.c 2015-05-29 08:27:06.270740317 +0200 +@@ -458,6 +458,13 @@ whatis_exp (char *exp, int show) type = value_type (val); @@ -2684,10 +2650,10 @@ Index: gdb-7.8.90.20150126/gdb/typeprint.c get_user_print_options (&opts); if (opts.objectprint) { -Index: gdb-7.8.90.20150126/gdb/valarith.c +Index: gdb-7.9.50.20150520/gdb/valarith.c =================================================================== ---- gdb-7.8.90.20150126.orig/gdb/valarith.c 2015-01-26 07:47:25.857758422 +0100 -+++ gdb-7.8.90.20150126/gdb/valarith.c 2015-01-26 07:47:42.409829926 +0100 +--- gdb-7.9.50.20150520.orig/gdb/valarith.c 2015-05-29 08:27:02.689717530 +0200 ++++ gdb-7.9.50.20150520/gdb/valarith.c 2015-05-29 08:27:06.271740324 +0200 @@ -193,12 +193,31 @@ value_subscripted_rvalue (struct value * struct type *array_type = check_typedef (value_type (array)); struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (array_type)); @@ -2722,10 +2688,10 @@ Index: gdb-7.8.90.20150126/gdb/valarith.c if (VALUE_LVAL (array) == lval_memory && value_lazy (array)) v = allocate_value_lazy (elt_type); -Index: gdb-7.8.90.20150126/gdb/valprint.c +Index: gdb-7.9.50.20150520/gdb/valprint.c =================================================================== ---- gdb-7.8.90.20150126.orig/gdb/valprint.c 2015-01-26 07:47:25.858758427 +0100 -+++ gdb-7.8.90.20150126/gdb/valprint.c 2015-01-26 07:47:42.410829930 +0100 +--- gdb-7.9.50.20150520.orig/gdb/valprint.c 2015-05-29 08:27:02.690717536 +0200 ++++ gdb-7.9.50.20150520/gdb/valprint.c 2015-05-29 08:27:06.271740324 +0200 @@ -303,6 +303,18 @@ valprint_check_validity (struct ui_file { CHECK_TYPEDEF (type); @@ -2764,7 +2730,7 @@ Index: gdb-7.8.90.20150126/gdb/valprint.c /* A generic val_print that is suitable for use by language implementations of the la_val_print method. This function can handle most type codes, though not all, notably exception -@@ -800,12 +824,16 @@ static int +@@ -802,12 +826,16 @@ static int value_check_printable (struct value *val, struct ui_file *stream, const struct value_print_options *options) { @@ -2781,7 +2747,7 @@ Index: gdb-7.8.90.20150126/gdb/valprint.c if (value_entirely_optimized_out (val)) { if (options->summary && !val_print_scalar_type_p (value_type (val))) -@@ -831,6 +859,18 @@ value_check_printable (struct value *val +@@ -833,6 +861,18 @@ value_check_printable (struct value *val return 0; } @@ -2800,23 +2766,23 @@ Index: gdb-7.8.90.20150126/gdb/valprint.c return 1; } -Index: gdb-7.8.90.20150126/gdb/valprint.h +Index: gdb-7.9.50.20150520/gdb/valprint.h =================================================================== ---- gdb-7.8.90.20150126.orig/gdb/valprint.h 2015-01-26 07:47:25.859758431 +0100 -+++ gdb-7.8.90.20150126/gdb/valprint.h 2015-01-26 07:47:42.410829930 +0100 -@@ -217,4 +217,8 @@ extern void output_command_const (const - - extern int val_print_scalar_type_p (struct type *type); +--- gdb-7.9.50.20150520.orig/gdb/valprint.h 2015-05-29 08:27:02.691717543 +0200 ++++ gdb-7.9.50.20150520/gdb/valprint.h 2015-05-29 08:27:06.272740330 +0200 +@@ -232,4 +232,8 @@ extern void print_command_parse_format ( + struct format_data *fmtp); + extern void print_value (struct value *val, const struct format_data *fmtp); +extern void val_print_not_allocated (struct ui_file *stream); + +extern void val_print_not_associated (struct ui_file *stream); + #endif -Index: gdb-7.8.90.20150126/gdb/value.c +Index: gdb-7.9.50.20150520/gdb/value.c =================================================================== ---- gdb-7.8.90.20150126.orig/gdb/value.c 2015-01-26 07:47:25.860758435 +0100 -+++ gdb-7.8.90.20150126/gdb/value.c 2015-01-26 07:47:42.411829935 +0100 +--- gdb-7.9.50.20150520.orig/gdb/value.c 2015-05-29 08:27:02.693717555 +0200 ++++ gdb-7.9.50.20150520/gdb/value.c 2015-05-29 08:27:06.273740337 +0200 @@ -40,6 +40,7 @@ #include "tracepoint.h" #include "cp-abi.h" @@ -2825,7 +2791,7 @@ Index: gdb-7.8.90.20150126/gdb/value.c /* Prototypes for exported functions. */ -@@ -1755,6 +1756,25 @@ set_value_component_location (struct val +@@ -1776,6 +1777,25 @@ set_value_component_location (struct val if (funcs->copy_closure) component->location.computed.closure = funcs->copy_closure (whole); } @@ -2851,7 +2817,7 @@ Index: gdb-7.8.90.20150126/gdb/value.c } -@@ -3041,13 +3061,22 @@ value_primitive_field (struct value *arg +@@ -3080,13 +3100,22 @@ value_primitive_field (struct value *arg v = allocate_value_lazy (type); else { @@ -2880,7 +2846,7 @@ Index: gdb-7.8.90.20150126/gdb/value.c } set_value_component_location (v, arg1); VALUE_REGNUM (v) = VALUE_REGNUM (arg1); -@@ -3635,7 +3664,8 @@ readjust_indirect_value_type (struct val +@@ -3674,7 +3703,8 @@ readjust_indirect_value_type (struct val struct value *original_value) { /* Re-adjust type. */ @@ -2890,7 +2856,7 @@ Index: gdb-7.8.90.20150126/gdb/value.c /* Add embedding info. */ set_value_enclosing_type (value, enc_type); -@@ -3652,6 +3682,12 @@ coerce_ref (struct value *arg) +@@ -3691,6 +3721,12 @@ coerce_ref (struct value *arg) struct value *retval; struct type *enc_type; @@ -2903,7 +2869,7 @@ Index: gdb-7.8.90.20150126/gdb/value.c retval = coerce_ref_if_computed (arg); if (retval) return retval; -@@ -3786,8 +3822,14 @@ value_fetch_lazy (struct value *val) +@@ -3825,8 +3861,14 @@ value_fetch_lazy (struct value *val) } else if (VALUE_LVAL (val) == lval_memory) { @@ -2919,11 +2885,11 @@ Index: gdb-7.8.90.20150126/gdb/value.c if (TYPE_LENGTH (type)) read_value_memory (val, 0, value_stack (val), -Index: gdb-7.8.90.20150126/gdb/dwarf2loc.c +Index: gdb-7.9.50.20150520/gdb/dwarf2loc.c =================================================================== ---- gdb-7.8.90.20150126.orig/gdb/dwarf2loc.c 2015-01-26 07:47:25.862758444 +0100 -+++ gdb-7.8.90.20150126/gdb/dwarf2loc.c 2015-01-26 07:47:42.412829939 +0100 -@@ -2293,6 +2293,11 @@ dwarf2_evaluate_loc_desc_full (struct ty +--- gdb-7.9.50.20150520.orig/gdb/dwarf2loc.c 2015-05-29 08:27:02.694717562 +0200 ++++ gdb-7.9.50.20150520/gdb/dwarf2loc.c 2015-05-29 08:27:06.274740343 +0200 +@@ -2294,6 +2294,11 @@ dwarf2_evaluate_loc_desc_full (struct ty int in_stack_memory = dwarf_expr_fetch_in_stack_memory (ctx, 0); do_cleanups (value_chain); @@ -2935,7 +2901,7 @@ Index: gdb-7.8.90.20150126/gdb/dwarf2loc.c retval = value_at_lazy (type, address + byte_offset); if (in_stack_memory) set_value_stack (retval, 1); -@@ -2552,6 +2557,19 @@ dwarf2_compile_property_to_c (struct ui_ +@@ -2577,6 +2582,19 @@ dwarf2_compile_property_to_c (struct ui_ data, data + size, per_cu); } diff --git a/gdb.changes b/gdb.changes index b69b6e0..a183636 100644 --- a/gdb.changes +++ b/gdb.changes @@ -1,3 +1,55 @@ +------------------------------------------------------------------- +Thu Jan 14 16:46:43 UTC 2016 - matz@suse.de + +- Rebase to gdb version 7.10.1 as of version in Fedora 23: + * reverse debugging on aarch64 + * new commands or subcommands: + - info os cpu, set/show serial parity, info dll + - maint print symbol-cache/symbol-cache-statistics, + maint flush-symbol-cache + - record btrace bts, record bts + - compile print + - show/set mpx bound + - tui enable/disable + - record btrace pt, record pt + - maint info btrace, + maint btrace packet-history/clear-packet-history/clear + * s390 support for vector ABI + * "set sysroot" improvements related to remote targets + * better support for debugging containerized programs + (without "set sysroot") + * HISTSIZE environment variable is replaced by GDBHISTSIZE + * python scripting: + - it's possible to write frame unwinders + - several new methods in Objfile, Type and Value classes + - gdb can auto-load scripts contained in special sections + named '.debug_gdb_scripts'. + * extensions for the MI interface, new remote packet types +- Removed obsolete patches: + 0001-S390-Add-target-descriptions-for-vector-register-set.patch + 0001-S390-Fix-compiler-invocation-with-compile-command.patch + 0001-S390-Support-new-vector-register-sections.patch + 0002-S390-Add-vector-register-support-to-gdb.patch + 0003-S390-Add-vector-register-support-to-gdbserver.patch + 0004-S390-Vector-register-test-case.patch + 0005-S390-Name-invisible-registers-with-the-empty-string-.patch + gdb-6.5-bz190810-gdbserver-arch-advice.patch + gdb-6.6-scheduler_locking-step-sw-watchpoints2.patch + gdb-6.8-bz457187-largefile-test.patch + gdb-enable-count-crash.patch + gdb-libstdc++-v3-python-r155978.tar.bz2 + gdb-no-dg-extract-results-py.patch + gdb-python3-py_hash_t-32bit.patch + gdb-python3-testsuite.patch + gdb-s390-reorder-arch.diff + gdb-upstream.patch +- Added new patches from Fedora: + gdb-pahole-python2.patch + gdb-probes-based-interface-robust-1of2.patch + gdb-probes-based-interface-robust-2of2.patch + gdb-rhbz1260558-ppc64le-skip_trampoline_code.patch + gdb-rhbz1270564-invalid-dwarf-regno.patch + ------------------------------------------------------------------- Fri Jul 10 13:49:28 UTC 2015 - matz@suse.de diff --git a/gdb.spec b/gdb.spec index 07f471d..146ead6 100644 --- a/gdb.spec +++ b/gdb.spec @@ -1,7 +1,7 @@ # # spec file for package gdb # -# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2012 RedHat # # All modifications and additions to the file contributed by third parties @@ -27,7 +27,7 @@ Name: gdb %global snap 20130731 # See timestamp of source gnulib installed into gdb/gnulib/ . %global snapgnulib 20121213 -Version: 7.9.1 +Version: 7.10.1 Release: 0 # The release always contains a leading reserved number, start it at 1. @@ -78,7 +78,7 @@ Source3: gdb-gstack.man Source4: gdbinit # libstdc++ pretty printers from GCC SVN HEAD (4.5 experimental). -%global libstdcxxpython gdb-libstdc++-v3-python-r155978 +%global libstdcxxpython gdb-libstdc++-v3-python-r225521 Source5: %{libstdcxxpython}.tar.bz2 # Provide gdbtui for RHEL-5 and RHEL-6 as it is removed upstream (BZ 797664). @@ -92,136 +92,123 @@ Source13: gdb-rpmlintrc #Fedora Packages begin Patch1: gdb-6.3-rh-testversion-20041202.patch -Patch2: gdb-upstream.patch -Patch3: gdb-archer.patch -Patch4: gdb-vla-intel.patch -Patch5: gdb-vla-intel-logical-not.patch -Patch6: gdb-vla-intel-stringbt-fix.patch -Patch7: gdb-vla-intel-04of23-fix.patch -Patch8: gdb-6.3-rh-dummykfail-20041202.patch -Patch9: gdb-6.3-ppc64syscall-20040622.patch -Patch10: gdb-6.3-ppc64displaysymbol-20041124.patch -Patch11: gdb-6.6-scheduler_locking-step-sw-watchpoints2.patch -Patch12: gdb-6.3-gstack-20050411.patch -Patch13: gdb-6.3-test-pie-20050107.patch -Patch14: gdb-6.3-test-self-20050110.patch -Patch15: gdb-6.3-test-dtorfix-20050121.patch -Patch16: gdb-6.3-test-movedir-20050125.patch -Patch17: gdb-6.3-threaded-watchpoints2-20050225.patch -Patch18: gdb-6.3-inferior-notification-20050721.patch -Patch19: gdb-6.3-inheritancetest-20050726.patch -Patch20: gdb-6.3-readnever-20050907.patch -Patch21: gdb-6.5-bz203661-emit-relocs.patch -Patch22: gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch -Patch23: gdb-6.5-sharedlibrary-path.patch -Patch24: gdb-6.5-bz190810-gdbserver-arch-advice.patch -Patch25: gdb-6.5-BEA-testsuite.patch -Patch26: gdb-6.5-last-address-space-byte-test.patch -Patch27: gdb-6.5-readline-long-line-crash-test.patch -Patch28: gdb-6.5-bz216711-clone-is-outermost.patch -Patch29: gdb-6.5-bz218379-ppc-solib-trampoline-test.patch -Patch30: gdb-6.5-bz218379-solib-trampoline-lookup-lock-fix.patch -Patch31: gdb-6.5-bz109921-DW_AT_decl_file-test.patch -Patch32: gdb-6.3-bz140532-ppc-unwinding-test.patch -Patch33: gdb-6.3-bz202689-exec-from-pthread-test.patch -Patch34: gdb-6.6-bz230000-power6-disassembly-test.patch -Patch35: gdb-6.3-bz231832-obstack-2gb.patch -Patch36: gdb-6.6-bz229517-gcore-without-terminal.patch -Patch37: gdb-6.6-bz235197-fork-detach-info.patch -Patch38: gdb-6.6-testsuite-timeouts.patch -Patch39: gdb-6.6-bz237572-ppc-atomic-sequence-test.patch -Patch40: gdb-6.6-scheduler_locking-step-is-default.patch -Patch41: gdb-6.3-attach-see-vdso-test.patch -Patch42: gdb-6.5-bz243845-stale-testing-zombie-test.patch -Patch43: gdb-6.6-buildid-locate.patch -Patch44: gdb-6.6-buildid-locate-solib-missing-ids.patch -Patch45: gdb-6.6-buildid-locate-rpm.patch -Patch46: gdb-6.7-charsign-test.patch -Patch47: gdb-6.7-ppc-clobbered-registers-O2-test.patch -Patch48: gdb-6.5-ia64-libunwind-leak-test.patch -Patch49: gdb-6.5-missed-trap-on-step-test.patch -Patch50: gdb-6.7-bz426600-DW_TAG_interface_type-test.patch -Patch51: gdb-6.5-gcore-buffer-limit-test.patch -Patch52: gdb-6.6-threads-static-test.patch -Patch53: gdb-6.3-mapping-zero-inode-test.patch -Patch54: gdb-6.3-focus-cmd-prev-test.patch -Patch55: gdb-6.8-bz442765-threaded-exec-test.patch -Patch56: gdb-6.8-sparc64-silence-memcpy-check.patch -Patch57: gdb-6.5-section-num-fixup-test.patch -Patch58: gdb-6.8-bz436037-reg-no-longer-active.patch -Patch59: gdb-6.8-watchpoint-conditionals-test.patch -Patch60: gdb-6.8-bz466901-backtrace-full-prelinked.patch -Patch61: gdb-6.8-bz457187-largefile-test.patch -Patch62: gdb-simultaneous-step-resume-breakpoint-test.patch -Patch63: gdb-core-open-vdso-warning.patch -Patch64: gdb-x86_64-i386-syscall-restart.patch -Patch65: gdb-bz533176-fortran-omp-step.patch -Patch66: gdb-follow-child-stale-parent.patch -Patch67: gdb-ccache-workaround.patch -Patch68: gdb-archer-pie-addons.patch -Patch69: gdb-archer-pie-addons-keep-disabled.patch -Patch70: gdb-lineno-makeup-test.patch -Patch71: gdb-ppc-power7-test.patch -Patch72: gdb-bz541866-rwatch-before-run.patch -Patch73: gdb-moribund-utrace-workaround.patch -Patch74: gdb-archer-next-over-throw-cxx-exec.patch -Patch75: gdb-bz601887-dwarf4-rh-test.patch -Patch76: gdb-6.6-buildid-locate-core-as-arg.patch -Patch77: gdb-6.6-buildid-locate-rpm-librpm-workaround.patch -Patch78: gdb-test-bt-cfi-without-die.patch -Patch79: gdb-gdb-add-index-script.patch -Patch80: gdb-bz568248-oom-is-error.patch -Patch81: gdb-bz634108-solib_address.patch -Patch82: gdb-test-pid0-core.patch -Patch83: gdb-test-dw2-aranges.patch -Patch84: gdb-test-expr-cumulative-archer.patch -Patch85: gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch -Patch86: gdb-glibc-vdso-workaround.patch -Patch87: gdb-runtest-pie-override.patch -Patch88: gdb-attach-fail-reasons-5of5.patch -Patch89: gdb-stale-frame_info.patch -Patch90: gdb-glibc-strstr-workaround.patch -Patch91: gdb-rhel5.9-testcase-xlf-var-inside-mod.patch -Patch92: gdb-rhbz-818343-set-solib-absolute-prefix-testcase.patch -Patch93: gdb-rhbz795424-bitpos-20of25.patch -Patch94: gdb-rhbz795424-bitpos-21of25.patch -Patch95: gdb-rhbz795424-bitpos-22of25.patch -Patch96: gdb-rhbz795424-bitpos-23of25.patch -Patch97: gdb-rhbz795424-bitpos-25of25.patch -Patch98: gdb-rhbz795424-bitpos-25of25-test.patch -Patch99: gdb-rhbz795424-bitpos-lazyvalue.patch -Patch100: gdb-rhbz947564-findvar-assertion-frame-failed-testcase.patch -Patch101: gdb-enable-count-crash.patch -Patch102: gdb-gnat-dwarf-crash-3of3.patch -Patch103: gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch -Patch104: gdb-archer-vla-tests.patch -Patch105: gdb-btrobust.patch -Patch106: gdb-fortran-frame-string.patch -Patch107: gdb-python-gil.patch -Patch108: gdb-jit-reader-multilib.patch -Patch109: gdb-no-dg-extract-results-py.patch -Patch110: gdb-python3-py_hash_t-32bit.patch -Patch111: gdb-python3-testsuite.patch -Patch112: gdb-dts-rhel6-python-compat.patch -Patch113: gdb-6.6-buildid-locate-rpm-scl.patch -Patch114: gdb-readline62-ask-more-rh.patch -Patch115: gdb-6.8-attach-signalled-detach-stopped.patch -Patch116: gdb-6.8-quit-never-aborts.patch -Patch117: gdb-rhel5-compat.patch +Patch2: gdb-archer.patch +Patch3: gdb-vla-intel.patch +Patch4: gdb-vla-intel-logical-not.patch +Patch5: gdb-vla-intel-stringbt-fix.patch +Patch6: gdb-vla-intel-04of23-fix.patch +Patch7: gdb-6.3-rh-dummykfail-20041202.patch +Patch8: gdb-6.3-ppc64syscall-20040622.patch +Patch9: gdb-6.3-ppc64displaysymbol-20041124.patch +Patch10: gdb-6.3-gstack-20050411.patch +Patch11: gdb-6.3-test-pie-20050107.patch +Patch12: gdb-6.3-test-self-20050110.patch +Patch13: gdb-6.3-test-dtorfix-20050121.patch +Patch14: gdb-6.3-test-movedir-20050125.patch +Patch15: gdb-6.3-threaded-watchpoints2-20050225.patch +Patch16: gdb-6.3-inferior-notification-20050721.patch +Patch17: gdb-6.3-inheritancetest-20050726.patch +Patch18: gdb-6.3-readnever-20050907.patch +Patch19: gdb-6.5-bz203661-emit-relocs.patch +Patch20: gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch +Patch21: gdb-6.5-sharedlibrary-path.patch +Patch22: gdb-6.5-BEA-testsuite.patch +Patch23: gdb-6.5-last-address-space-byte-test.patch +Patch24: gdb-6.5-readline-long-line-crash-test.patch +Patch25: gdb-6.5-bz216711-clone-is-outermost.patch +Patch26: gdb-6.5-bz218379-ppc-solib-trampoline-test.patch +Patch27: gdb-6.5-bz218379-solib-trampoline-lookup-lock-fix.patch +Patch28: gdb-6.5-bz109921-DW_AT_decl_file-test.patch +Patch29: gdb-6.3-bz140532-ppc-unwinding-test.patch +Patch30: gdb-6.3-bz202689-exec-from-pthread-test.patch +Patch31: gdb-6.6-bz230000-power6-disassembly-test.patch +Patch32: gdb-6.3-bz231832-obstack-2gb.patch +Patch33: gdb-6.6-bz229517-gcore-without-terminal.patch +Patch34: gdb-6.6-bz235197-fork-detach-info.patch +Patch35: gdb-6.6-testsuite-timeouts.patch +Patch36: gdb-6.6-bz237572-ppc-atomic-sequence-test.patch +Patch37: gdb-6.6-scheduler_locking-step-is-default.patch +Patch38: gdb-6.3-attach-see-vdso-test.patch +Patch39: gdb-6.5-bz243845-stale-testing-zombie-test.patch +Patch40: gdb-6.6-buildid-locate.patch +Patch41: gdb-6.6-buildid-locate-solib-missing-ids.patch +Patch42: gdb-6.6-buildid-locate-rpm.patch +Patch43: gdb-6.7-charsign-test.patch +Patch44: gdb-6.7-ppc-clobbered-registers-O2-test.patch +Patch45: gdb-6.5-ia64-libunwind-leak-test.patch +Patch46: gdb-6.5-missed-trap-on-step-test.patch +Patch47: gdb-6.7-bz426600-DW_TAG_interface_type-test.patch +Patch48: gdb-6.5-gcore-buffer-limit-test.patch +Patch49: gdb-6.6-threads-static-test.patch +Patch50: gdb-6.3-mapping-zero-inode-test.patch +Patch51: gdb-6.3-focus-cmd-prev-test.patch +Patch52: gdb-6.8-bz442765-threaded-exec-test.patch +Patch53: gdb-6.8-sparc64-silence-memcpy-check.patch +Patch54: gdb-6.5-section-num-fixup-test.patch +Patch55: gdb-6.8-bz436037-reg-no-longer-active.patch +Patch56: gdb-6.8-watchpoint-conditionals-test.patch +Patch57: gdb-6.8-bz466901-backtrace-full-prelinked.patch +Patch58: gdb-simultaneous-step-resume-breakpoint-test.patch +Patch59: gdb-core-open-vdso-warning.patch +Patch60: gdb-x86_64-i386-syscall-restart.patch +Patch61: gdb-bz533176-fortran-omp-step.patch +Patch62: gdb-follow-child-stale-parent.patch +Patch63: gdb-ccache-workaround.patch +Patch64: gdb-archer-pie-addons.patch +Patch65: gdb-archer-pie-addons-keep-disabled.patch +Patch66: gdb-lineno-makeup-test.patch +Patch67: gdb-ppc-power7-test.patch +Patch68: gdb-bz541866-rwatch-before-run.patch +Patch69: gdb-moribund-utrace-workaround.patch +Patch70: gdb-archer-next-over-throw-cxx-exec.patch +Patch71: gdb-bz601887-dwarf4-rh-test.patch +Patch72: gdb-6.6-buildid-locate-core-as-arg.patch +Patch73: gdb-6.6-buildid-locate-rpm-librpm-workaround.patch +Patch74: gdb-test-bt-cfi-without-die.patch +Patch75: gdb-gdb-add-index-script.patch +Patch76: gdb-bz568248-oom-is-error.patch +Patch77: gdb-bz634108-solib_address.patch +Patch78: gdb-test-pid0-core.patch +Patch79: gdb-test-dw2-aranges.patch +Patch80: gdb-test-expr-cumulative-archer.patch +Patch81: gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch +Patch82: gdb-glibc-vdso-workaround.patch +Patch83: gdb-runtest-pie-override.patch +Patch84: gdb-attach-fail-reasons-5of5.patch +Patch85: gdb-stale-frame_info.patch +Patch86: gdb-glibc-strstr-workaround.patch +Patch87: gdb-rhel5.9-testcase-xlf-var-inside-mod.patch +Patch88: gdb-rhbz-818343-set-solib-absolute-prefix-testcase.patch +Patch89: gdb-rhbz795424-bitpos-20of25.patch +Patch90: gdb-rhbz795424-bitpos-21of25.patch +Patch91: gdb-rhbz795424-bitpos-22of25.patch +Patch92: gdb-rhbz795424-bitpos-23of25.patch +Patch93: gdb-rhbz795424-bitpos-25of25.patch +Patch94: gdb-rhbz795424-bitpos-25of25-test.patch +Patch95: gdb-rhbz795424-bitpos-lazyvalue.patch +Patch96: gdb-rhbz947564-findvar-assertion-frame-failed-testcase.patch +Patch97: gdb-gnat-dwarf-crash-3of3.patch +Patch98: gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch +Patch99: gdb-archer-vla-tests.patch +Patch100: gdb-btrobust.patch +Patch101: gdb-fortran-frame-string.patch +Patch102: gdb-python-gil.patch +Patch103: gdb-jit-reader-multilib.patch +Patch104: gdb-probes-based-interface-robust-1of2.patch +Patch105: gdb-probes-based-interface-robust-2of2.patch +Patch106: gdb-rhbz1260558-ppc64le-skip_trampoline_code.patch +Patch107: gdb-rhbz1270564-invalid-dwarf-regno.patch +Patch108: gdb-dts-rhel6-python-compat.patch +Patch109: gdb-6.6-buildid-locate-rpm-scl.patch +Patch110: gdb-readline62-ask-more-rh.patch +Patch111: gdb-6.8-attach-signalled-detach-stopped.patch +Patch112: gdb-6.8-quit-never-aborts.patch +Patch113: gdb-rhel5-compat.patch +Patch114: gdb-pahole-python2.patch #Fedora Packages end # Upstream patch to fix gcc -Werror Patch1002: gdb-6.6-buildid-locate-rpm-suse.patch -# Upstream patch for reordering "s390:31-bit" (bnc#936050) -Patch1003: gdb-s390-reorder-arch.diff -# fate#318039 -Patch1004: 0001-S390-Fix-compiler-invocation-with-compile-command.patch -Patch1005: 0001-S390-Support-new-vector-register-sections.patch -Patch1006: 0001-S390-Add-target-descriptions-for-vector-register-set.patch -Patch1007: 0002-S390-Add-vector-register-support-to-gdb.patch -Patch1008: 0003-S390-Add-vector-register-support-to-gdbserver.patch -Patch1009: 0004-S390-Vector-register-test-case.patch -Patch1010: 0005-S390-Name-invisible-registers-with-the-empty-string-.patch BuildRequires: bison BuildRequires: flex @@ -284,6 +271,7 @@ BuildRequires: gcc-ada %endif %if 0%{suse_version} > 1110 %ifarch x86_64 ppc64 s390x +BuildRequires: gcc-ada-32bit BuildRequires: gcc-c++-32bit %endif %endif @@ -465,32 +453,21 @@ find -name "*.info*"|xargs rm -f %patch106 -p1 %patch107 -p1 %patch108 -p1 +%patch108 -p1 -R %patch109 -p1 +%patch109 -p1 -R %patch110 -p1 +%patch110 -p1 -R %patch111 -p1 %patch112 -p1 -%patch112 -p1 -R %patch113 -p1 %patch113 -p1 -R +%patch112 -p1 -R +%patch111 -p1 -R %patch114 -p1 -%patch114 -p1 -R -%patch115 -p1 -%patch116 -p1 -%patch117 -p1 -%patch117 -p1 -R -%patch116 -p1 -R -%patch115 -p1 -R #Fedora patching end %patch1002 -p1 -%patch1003 -p1 -%patch1004 -p1 -%patch1005 -p1 -%patch1006 -p1 -%patch1007 -p1 -%patch1008 -p1 -%patch1009 -p1 -%patch1010 -p1 find -name "*.orig" | xargs rm -f ! find -name "*.rej" # Should not happen. @@ -566,6 +543,7 @@ EXTRA_TARGETS= --with-separate-debug-dir=/usr/lib/debug \ --disable-sim \ --disable-rpath \ + --with-system-zlib \ %if %{suse_version} > 1110 --with-system-readline \ %else @@ -671,8 +649,6 @@ cd %{gdb_build} #make %{?_smp_mflags} -C gdb/doc {gdb,annotate}{.info,/index.html,.pdf} MAKEHTMLFLAGS=--no-split -grep '#define HAVE_ZLIB_H 1' gdb/config.h - # Copy the /gdb/NEWS file to the directory above it. cp $RPM_BUILD_DIR/%{gdb_src}/gdb/NEWS $RPM_BUILD_DIR/%{gdb_src} From c3dcbb42f676032576d0cd9be326fbc30ad6deabfc845a8b875afbb5382cb427 Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Thu, 14 Jan 2016 17:15:57 +0000 Subject: [PATCH 2/2] Don't Require gcc-ada-32bit on old distros. OBS-URL: https://build.opensuse.org/package/show/devel:gcc/gdb?expand=0&rev=129 --- gdb.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gdb.spec b/gdb.spec index 146ead6..0d9de96 100644 --- a/gdb.spec +++ b/gdb.spec @@ -271,7 +271,11 @@ BuildRequires: gcc-ada %endif %if 0%{suse_version} > 1110 %ifarch x86_64 ppc64 s390x +%if 0%{suse_version} >= 1330 +# Older distros miss this pseudo package, the Ada +# testsuite won't work completely BuildRequires: gcc-ada-32bit +%endif BuildRequires: gcc-c++-32bit %endif %endif