X-Git-Url: https://git.pld-linux.org/?a=blobdiff_plain;f=gdb-vla-intel-stringbt-fix.patch;h=b2170f4c5493048a5342018b32e975663c0ddf04;hb=ed003b1c3480a9cc88026c2180c27b6cbf6f82bb;hp=67850f34c9494bd74be689a73eff816ee466b972;hpb=b1b25d28f76e313545f07b2460d6a34077ab53e5;p=packages%2Fgdb.git diff --git a/gdb-vla-intel-stringbt-fix.patch b/gdb-vla-intel-stringbt-fix.patch index 67850f3..b2170f4 100644 --- a/gdb-vla-intel-stringbt-fix.patch +++ b/gdb-vla-intel-stringbt-fix.patch @@ -1,10 +1,11 @@ -http://sourceware.org/ml/gdb-patches/2014-08/msg00025.html -Subject: [patch 1/2] Re: Crash regression(?) printing Fortran strings in bt [Re: [V2 00/23] Fortran dynamic array support] +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Jan Kratochvil +Date: Fri, 1 Aug 2014 23:02:17 +0200 +Subject: gdb-vla-intel-stringbt-fix.patch +;;=push+jan ---FCuugMFkClbJLl1L -Content-Type: text/plain; charset=us-ascii -Content-Disposition: inline +http://sourceware.org/ml/gdb-patches/2014-08/msg00025.html On Fri, 01 Aug 2014 09:20:19 +0200, Keven Boell wrote: > I just tried it on Fedora 20 i686. Applied the patch, you mentioned, on top of @@ -23,38 +24,45 @@ so that there is no longer needed the patch: The fix below has no regressions for me. Unfortunately I do not see why you cannot reproduce it. - Thanks, Jan ---FCuugMFkClbJLl1L -Content-Type: text/plain; charset=us-ascii -Content-Disposition: inline; filename="vlastringonly.patch" - -Index: gdb-7.8.50.20141228/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)); - - case TYPE_CODE_ARRAY: -+ case TYPE_CODE_STRING: - { - gdb_assert (TYPE_NFIELDS (type) == 1); +diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c +--- a/gdb/dwarf2loc.c ++++ b/gdb/dwarf2loc.c +@@ -42,6 +42,7 @@ + #include + #include + #include ++#include + #include "common/underlying.h" + #include "common/byte-vector.h" -@@ -1992,6 +1993,7 @@ resolve_dynamic_type_internal (struct ty - } +@@ -2348,6 +2349,20 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame, + ctx.per_cu = per_cu; + ctx.obj_address = 0; - case TYPE_CODE_ARRAY: -+ case TYPE_CODE_STRING: - resolved_type = resolve_dynamic_array (type, addr); - break; ++frame_id old_frame_id (get_frame_id (deprecated_safe_get_selected_frame ())); ++class RestoreCall { ++private: ++ const std::function func; ++public: ++ RestoreCall(std::function func_):func(func_) {} ++ ~RestoreCall() { func(); } ++} restore_frame([=]() { ++ frame_info *old_frame (frame_find_by_id (old_frame_id)); ++ if (old_frame != NULL) ++ select_frame (old_frame); ++}); ++if (frame != NULL) select_frame (frame); ++ + scoped_value_mark free_values; -Index: gdb-7.8.50.20141228/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 + ctx.gdbarch = get_objfile_arch (objfile); +diff --git a/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90 b/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90 +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90 @@ -0,0 +1,24 @@ +! Copyright 2010 Free Software Foundation, Inc. +! @@ -80,10 +88,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 -=================================================================== ---- /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 +diff --git a/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp b/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp @@ -0,0 +1,39 @@ +# Copyright 2010 Free Software Foundation, Inc. + @@ -124,10 +132,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 -=================================================================== ---- /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 +diff --git a/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90 b/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90 +new file mode 100644 +--- /dev/null ++++ b/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90 @@ -0,0 +1,36 @@ +! Copyright 2010 Free Software Foundation, Inc. +!