diff --git a/gdb-6.3-gstack-20050411.patch b/gdb-6.3-gstack-20050411.patch index 552ca8c7a153e0963a08d90d6be012ddf7ad6e0c..9ecb9e7ee4f87956048f4efd3c7b207c2cc9e0db 100644 --- a/gdb-6.3-gstack-20050411.patch +++ b/gdb-6.3-gstack-20050411.patch @@ -110,122 +110,3 @@ new file mode 100644 + -e 's/^\((gdb) \)*//' \ + -e '/^#/p' \ + -e '/^Thread/p' -diff --git a/gdb/testsuite/gdb.base/gstack.c b/gdb/testsuite/gdb.base/gstack.c -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.base/gstack.c -@@ -0,0 +1,43 @@ -+/* This testcase is part of GDB, the GNU debugger. -+ -+ Copyright 2005, 2007, 2008, 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 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 -+#include -+#include -+ -+void -+func (void) -+{ -+ const char msg[] = "looping\n"; -+ -+ /* Use the most simple notification not to get caught by attach on exiting -+ the function. */ -+ write (1, msg, strlen (msg)); -+ -+ for (;;); -+} -+ -+int -+main (void) -+{ -+ alarm (60); -+ nice (100); -+ -+ func (); -+ -+ return 0; -+} -diff --git a/gdb/testsuite/gdb.base/gstack.exp b/gdb/testsuite/gdb.base/gstack.exp -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.base/gstack.exp -@@ -0,0 +1,66 @@ -+# Copyright (C) 2012 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 . -+ -+set testfile gstack -+set executable ${testfile} -+set binfile [standard_output_file $executable] -+if {[build_executable ${testfile} ${executable} "" {debug}] == -1} { -+ return -1 -+} -+ -+set test "spawn inferior" -+set command "${binfile}" -+set res [remote_spawn host $command]; -+if { $res < 0 || $res == "" } { -+ perror "Spawning $command failed." -+ fail $test -+ return -+} -+set use_gdb_stub 1 -+set pid [exp_pid -i $res] -+gdb_expect { -+ -re "looping\r\n" { -+ pass $test -+ } -+ eof { -+ fail "$test (eof)" -+ return -+ } -+ timeout { -+ fail "$test (timeout)" -+ return -+ } -+} -+gdb_exit -+ -+# Testcase uses the most simple notification not to get caught by attach on -+# exiting the function. Still we could retry the gstack command if we fail. -+ -+set test "spawn gstack" -+set command "sh -c GDB=$GDB\\ GDBARGS=-data-directory\\\\\\ $BUILD_DATA_DIRECTORY\\ sh\\ ${srcdir}/../gstack.sh\\ $pid\\;echo\\ GSTACK-END" -+set res [remote_spawn host $command]; -+if { $res < 0 || $res == "" } { -+ perror "Spawning $command failed." -+ fail $test -+} -+set pid [exp_pid -i $res] -+gdb_test_multiple "" $test { -+ -re "^#0 +(0x\[0-9a-f\]+ in )?\\.?func \\(\\) at \[^\r\n\]*\r\n#1 +0x\[0-9a-f\]+ in \\.?main \\(\\) at \[^\r\n\]*\r\nGSTACK-END\r\n\$" { -+ pass $test -+ } -+} -+gdb_exit -+ -+remote_exec host "kill -9 $pid" diff --git a/gdb-6.5-bz216711-clone-is-outermost.patch b/gdb-6.5-bz216711-clone-is-outermost.patch index f11df0a9b41d6fe8b13eca01d1ca0356fff2c6e5..aa8611b1782f1e1e659de8a7986451e66e5f6ded 100644 --- a/gdb-6.5-bz216711-clone-is-outermost.patch +++ b/gdb-6.5-bz216711-clone-is-outermost.patch @@ -1,11 +1,3 @@ -From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 -From: Jan Kratochvil -Date: Fri, 27 Oct 2017 21:07:50 +0200 -Subject: gdb-6.5-bz216711-clone-is-outermost.patch - -;; Fix bogus 0x0 unwind of the thread's topmost function clone(3) (BZ 216711). -;;=fedora - https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=216711 FIXME: This workaround should be dropped and @@ -192,113 +184,3 @@ diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h }; /* Floating-point registers. */ -diff --git a/gdb/testsuite/gdb.threads/bt-clone-stop.c b/gdb/testsuite/gdb.threads/bt-clone-stop.c -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.threads/bt-clone-stop.c -@@ -0,0 +1,39 @@ -+/* This testcase is part of GDB, the GNU debugger. -+ -+ Copyright 2006 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., 51 Franklin Street, Fifth Floor, Boston, -+ MA 02110-1301, USA. */ -+ -+ -+#include -+#include -+#include -+ -+ -+void *threader (void *arg) -+{ -+ assert (0); -+ return NULL; -+} -+ -+int main (void) -+{ -+ pthread_t t1; -+ -+ pthread_create (&t1, NULL, threader, (void *) NULL); -+ for (;;) -+ pause(); -+} -diff --git a/gdb/testsuite/gdb.threads/bt-clone-stop.exp b/gdb/testsuite/gdb.threads/bt-clone-stop.exp -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.threads/bt-clone-stop.exp -@@ -0,0 +1,61 @@ -+# Copyright 2006 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. -+ -+# Backtraced `clone' must not have `PC == 0' as its previous frame. -+ -+if $tracelevel then { -+ strace $tracelevel -+} -+ -+set testfile bt-clone-stop -+set srcfile ${testfile}.c -+set binfile [standard_output_file ${testfile}] -+if { [gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { -+ untested "Couldn't compile test program" -+ return -1 -+} -+ -+# Get things started. -+ -+gdb_exit -+gdb_start -+gdb_reinitialize_dir $srcdir/$subdir -+gdb_load ${binfile} -+ -+# threader: threader.c:8: threader: Assertion `0' failed. -+# Program received signal SIGABRT, Aborted. -+ -+gdb_test "run" \ -+ {Thread 2 "bt-clone-stop" received signal SIGABRT.*} \ -+ "run" -+ -+# Former gdb unwind (the first function is `clone'): -+# #5 0x0000003421ecd62d in ?? () from /lib64/libc.so.6 -+# #6 0x0000000000000000 in ?? () -+# (gdb) -+# Tested `amd64_linux_outermost_frame' functionality should omit the line `#6'. -+# -+# Two `-re' cases below must be in this order (1st is a subset of the 2nd one). -+# Unhandled case below should not happen and it is fortunately handled by -+# `amd64_linux_outermost_frame' as FAIL (and result `0x0 entry output invalid'). -+gdb_test_multiple "bt" "0x0 entry output invalid" { -+ -re "in threader \\(.*\n#\[0-9\]* *0x0* in .*$gdb_prompt $" { -+ fail "0x0 entry found" -+ } -+ -re "in threader \\(.*$gdb_prompt $" { -+ pass "0x0 entry not found" -+ } -+} diff --git a/gdb-6.6-buildid-locate-solib-missing-ids.patch b/gdb-6.6-buildid-locate-solib-missing-ids.patch index 2b961666c9034755b2b5ebdc1e41897375bc4d4f..64d8a987a1241b0242dfb82cc36e1676177136e0 100644 --- a/gdb-6.6-buildid-locate-solib-missing-ids.patch +++ b/gdb-6.6-buildid-locate-solib-missing-ids.patch @@ -1,13 +1,3 @@ -From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 -From: Fedora GDB patches -Date: Fri, 27 Oct 2017 21:07:50 +0200 -Subject: gdb-6.6-buildid-locate-solib-missing-ids.patch - -;; Fix loading of core files without build-ids but with build-ids in executables. -;; Load strictly build-id-checked core files only if no executable is specified -;; (Jan Kratochvil, RH BZ 1339862). -;;=push+jan - gdb returns an incorrect back trace when applying a debuginfo https://bugzilla.redhat.com/show_bug.cgi?id=1339862 @@ -69,169 +59,3 @@ diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c xfree (build_id_filename); xfree (build_id); -diff --git a/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-lib.c b/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-lib.c -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-lib.c -@@ -0,0 +1,21 @@ -+/* Copyright 2010 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 . */ -+ -+void -+lib (void) -+{ -+} -diff --git a/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-main.c b/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-main.c -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib-main.c -@@ -0,0 +1,25 @@ -+/* Copyright 2010 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 . */ -+ -+extern void lib (void); -+ -+int -+main (void) -+{ -+ lib (); -+ return 0; -+} -diff --git a/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib.exp b/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib.exp -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.base/gcore-buildid-exec-but-not-solib.exp -@@ -0,0 +1,105 @@ -+# Copyright 2016 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 . -+ -+if {[skip_shlib_tests]} { -+ return 0 -+} -+ -+set testfile "gcore-buildid-exec-but-not-solib" -+set srcmainfile ${testfile}-main.c -+set srclibfile ${testfile}-lib.c -+set libfile [standard_output_file ${testfile}-lib.so] -+set objfile [standard_output_file ${testfile}-main.o] -+set executable ${testfile}-main -+set binfile [standard_output_file ${executable}] -+set gcorefile [standard_output_file ${executable}.gcore] -+set outdir [file dirname $binfile] -+ -+if { [gdb_compile_shlib ${srcdir}/${subdir}/${srclibfile} ${libfile} "debug additional_flags=-Wl,--build-id"] != "" -+ || [gdb_compile ${srcdir}/${subdir}/${srcmainfile} ${objfile} object {debug}] != "" } { -+ unsupported "-Wl,--build-id compilation failed" -+ return -1 -+} -+set opts [list debug shlib=${libfile} "additional_flags=-Wl,--build-id"] -+if { [gdb_compile ${objfile} ${binfile} executable $opts] != "" } { -+ unsupported "-Wl,--build-id compilation failed" -+ return -1 -+} -+ -+clean_restart $executable -+gdb_load_shlib $libfile -+ -+# Does this gdb support gcore? -+set test "help gcore" -+gdb_test_multiple $test $test { -+ -re "Undefined command: .gcore.*\r\n$gdb_prompt $" { -+ # gcore command not supported -- nothing to test here. -+ unsupported "gdb does not support gcore on this target" -+ return -1; -+ } -+ -re "Save a core file .*\r\n$gdb_prompt $" { -+ pass $test -+ } -+} -+ -+if { ![runto lib] } then { -+ return -1 -+} -+ -+set escapedfilename [string_to_regexp ${gcorefile}] -+ -+set test "save a corefile" -+gdb_test_multiple "gcore ${gcorefile}" $test { -+ -re "Saved corefile ${escapedfilename}\r\n$gdb_prompt $" { -+ pass $test -+ } -+ -re "Can't create a corefile\r\n$gdb_prompt $" { -+ unsupported $test -+ return -1 -+ } -+} -+ -+# Now restart gdb and load the corefile. -+ -+clean_restart $executable -+gdb_load_shlib $libfile -+ -+set buildid [build_id_debug_filename_get $libfile] -+ -+regsub {\.debug$} $buildid {} buildid -+ -+set debugdir [standard_output_file ${testfile}-debugdir] -+file delete -force -- $debugdir -+ -+file mkdir $debugdir/[file dirname $libfile] -+file copy $libfile $debugdir/${libfile} -+ -+file mkdir $debugdir/[file dirname $buildid] -+file copy $libfile $debugdir/${buildid} -+ -+remote_exec build "ln -s /lib ${debugdir}/" -+remote_exec build "ln -s /lib64 ${debugdir}/" -+# /usr is not needed, all the libs are in /lib64: libm.so.6 libc.so.6 ld-linux-x86-64.so.2 -+ -+gdb_test "set solib-absolute-prefix $debugdir" -+ -+gdb_test_no_output "set debug-file-directory $debugdir" "set debug-file-directory" -+ -+gdb_test "core ${gcorefile}" "Core was generated by .*" "re-load generated corefile" -+ -+gdb_test "frame" "#0 \[^\r\n\]* lib .*" "library got loaded" -+ -+gdb_test "bt" -+gdb_test "info shared" diff --git a/gdb-6.6-buildid-locate.patch b/gdb-6.6-buildid-locate.patch index 6acb6bc744454bf8016e258ca34ad0f9a63f5e8f..9cc655c8294b36487b125f6fe81f7e6d5e8961ed 100644 --- a/gdb-6.6-buildid-locate.patch +++ b/gdb-6.6-buildid-locate.patch @@ -1,11 +1,3 @@ -From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 -From: Fedora GDB patches -Date: Fri, 27 Oct 2017 21:07:50 +0200 -Subject: gdb-6.6-buildid-locate.patch - -;; New locating of the matching binaries from the pure core file (build-id). -;;=push+jan - diff --git a/gdb/build-id.c b/gdb/build-id.c --- a/gdb/build-id.c +++ b/gdb/build-id.c @@ -1159,91 +1151,3 @@ diff --git a/gdb/symfile.h b/gdb/symfile.h /* From dwarf2read.c */ /* Names for a dwarf2 debugging section. The field NORMAL is the normal -diff --git a/gdb/testsuite/gdb.base/corefile.exp b/gdb/testsuite/gdb.base/corefile.exp ---- a/gdb/testsuite/gdb.base/corefile.exp -+++ b/gdb/testsuite/gdb.base/corefile.exp -@@ -311,3 +311,33 @@ gdb_test_multiple "core-file $corefile" $test { - pass $test - } - } -+ -+ -+# Test auto-loading of binary files through build-id from the core file. -+set buildid [build_id_debug_filename_get $binfile] -+set wholetest "binfile found by build-id" -+if {$buildid == ""} { -+ untested "$wholetest (binary has no build-id)" -+} else { -+ gdb_exit -+ gdb_start -+ -+ regsub {\.debug$} $buildid {} buildid -+ set debugdir [standard_output_file ${testfile}-debugdir] -+ file delete -force -- $debugdir -+ file mkdir $debugdir/[file dirname $buildid] -+ file copy $binfile $debugdir/$buildid -+ -+ set test "show debug-file-directory" -+ gdb_test_multiple $test $test { -+ -re "The directory where separate debug symbols are searched for is \"(.*)\"\\.\r\n$gdb_prompt $" { -+ set debugdir_orig $expect_out(1,string) -+ pass $test -+ } -+ } -+ gdb_test_no_output "set debug-file-directory $debugdir:$debugdir_orig" "set debug-file-directory" -+ gdb_test "show build-id-core-loads" {Whether CORE-FILE loads the build-id associated files automatically is on\.} -+ gdb_test "core-file $corefile" "\r\nProgram terminated with .*" "core-file without executable" -+ gdb_test "info files" "Local exec file:\r\n\[ \t\]*`[string_to_regexp $debugdir/$buildid]', file type .*" -+ pass $wholetest -+} -diff --git a/gdb/testsuite/gdb.base/new-ui-pending-input.exp b/gdb/testsuite/gdb.base/new-ui-pending-input.exp ---- a/gdb/testsuite/gdb.base/new-ui-pending-input.exp -+++ b/gdb/testsuite/gdb.base/new-ui-pending-input.exp -@@ -62,6 +62,7 @@ proc test_command_line_new_ui_pending_input {} { - set options "" - append options " -iex \"set height 0\"" - append options " -iex \"set width 0\"" -+ append options " -iex \"set build-id-verbose 0\"" - append options " -iex \"new-ui console $extra_tty_name\"" - append options " -ex \"b $bpline\"" - append options " -ex \"run\"" -diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp ---- a/gdb/testsuite/lib/gdb.exp -+++ b/gdb/testsuite/lib/gdb.exp -@@ -1695,6 +1695,16 @@ proc default_gdb_start { } { - warning "Couldn't set the width to 0." - } - } -+ # Turn off the missing warnings as the testsuite does not expect it. -+ send_gdb "set build-id-verbose 0\n" -+ gdb_expect 10 { -+ -re "$gdb_prompt $" { -+ verbose "Disabled the missing debug infos warnings." 2 -+ } -+ timeout { -+ warning "Could not disable the missing debug infos warnings.." -+ } -+ } - return 0 - } - -diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp ---- a/gdb/testsuite/lib/mi-support.exp -+++ b/gdb/testsuite/lib/mi-support.exp -@@ -309,6 +309,16 @@ proc default_mi_gdb_start { args } { - warning "Couldn't set the width to 0." - } - } -+ # Turn off the missing warnings as the testsuite does not expect it. -+ 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$" { -+ verbose "Disabled the missing debug infos warnings." 2 -+ } -+ timeout { -+ warning "Could not disable the missing debug infos warnings.." -+ } -+ } - - if { $separate_inferior_pty } { - mi_create_inferior_pty diff --git a/gdb-archer.patch b/gdb-archer.patch index f083691a8af9ee2bc270160b4ff64cf3e8cf6f84..4b35aad9eb06786a46225ff28b5d42e3a49da687 100644 --- a/gdb-archer.patch +++ b/gdb-archer.patch @@ -521,45 +521,6 @@ diff --git a/gdb/python/python.h b/gdb/python/python.h +extern void run_python_script (int argc, char **argv); + #endif /* GDB_PYTHON_H */ -diff --git a/gdb/testsuite/gdb.python/py-frame.exp b/gdb/testsuite/gdb.python/py-frame.exp ---- 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 - - gdb_test "python print ('result = %s' % (gdb.selected_frame () == f1))" " = True" "test gdb.selected_frame" - -+gdb_test "python print ('result = %s' % (f0.block ()))" "" "test Frame.block" -+ - # Can read SP register. - 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 ---- a/gdb/testsuite/gdb.python/py-value.exp -+++ b/gdb/testsuite/gdb.python/py-value.exp -@@ -384,6 +384,15 @@ proc test_value_after_death {} { - "print value's type" - } - -+# Regression test for a cast failure. The bug was that if we cast a -+# value to its own type, gdb could crash. This happened because we -+# could end up double-freeing a struct value. -+proc test_cast_regression {} { -+ gdb_test "python v = gdb.Value(5)" "" "create value for cast test" -+ gdb_test "python v = v.cast(v.type)" "" "cast value for cast test" -+ gdb_test "python print(v)" "5" "print value for cast test" -+} -+ - # Regression test for invalid subscript operations. The bug was that - # the type of the value was not being checked before allowing a - # subscript operation to proceed. -@@ -512,6 +521,7 @@ if ![runto_main] then { - test_value_in_inferior - test_inferior_function_call - test_value_after_death -+test_cast_regression - - # Test either C or C++ values. - diff --git a/gdb/varobj.c b/gdb/varobj.c --- a/gdb/varobj.c +++ b/gdb/varobj.c diff --git a/gdb-bz541866-rwatch-before-run.patch b/gdb-bz541866-rwatch-before-run.patch index 3eecfc5ea0b9c90edc4ca683c439f8bb9d9ca934..c1aca0ab100b9e091b3ed45d64b933315bc67fbf 100644 --- a/gdb-bz541866-rwatch-before-run.patch +++ b/gdb-bz541866-rwatch-before-run.patch @@ -119,48 +119,3 @@ diff --git a/gdb/target.h b/gdb/target.h /* Returns the number of debug registers needed to watch the given memory region, or zero if not supported. */ -diff --git a/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp b/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp -@@ -0,0 +1,40 @@ -+# Copyright 2009, 2010 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 . -+ -+# Arch not supporting hw watchpoints does not imply no_hardware_watchpoints set. -+if {(![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"] -+ && ![istarget "ia64-*-*"]) -+ || [target_info exists gdb,no_hardware_watchpoints]} then { -+ verbose "Skipping watchpoint-hw-before-run test." -+ return -+} -+ -+set test watchpoint-hw-before-run -+set srcfile watchpoint-hw-hit-once.c -+if { [prepare_for_testing ${test}.exp ${test} ${srcfile}] } { -+ return -1 -+} -+ -+gdb_test "rwatch watchee" "ardware read watchpoint 1: watchee" -+ -+# `runto_main' or `runto main' would delete the watchpoint created above. -+ -+if { [gdb_start_cmd] < 0 } { -+ untested start -+ return -1 -+} -+gdb_test "" "main .* at .*" "start" -+ -+gdb_test "continue" "Continuing.\r\n\r\nHardware read watchpoint \[0-9\]+: watchee\r\n\r\nValue = 0\r\n.*" diff --git a/gdb-glibc-strstr-workaround.patch b/gdb-glibc-strstr-workaround.patch index 85c9621a169785e62cf7752ff7de84d10ac236a9..8ccbe69129c75266d75310e361b70be21689dfe4 100644 --- a/gdb-glibc-strstr-workaround.patch +++ b/gdb-glibc-strstr-workaround.patch @@ -1,11 +1,3 @@ -From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 -From: Fedora GDB patches -Date: Fri, 27 Oct 2017 21:07:50 +0200 -Subject: gdb-glibc-strstr-workaround.patch - -;; Workaround PR libc/14166 for inferior calls of strstr. -;;=fedora: Compatibility with RHELs (unchecked which ones). - diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -36,116 +28,3 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile); /* Fortran does not have mangling standard and the mangling does differ -diff --git a/gdb/testsuite/gdb.base/gnu-ifunc-strstr-workaround.exp b/gdb/testsuite/gdb.base/gnu-ifunc-strstr-workaround.exp -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.base/gnu-ifunc-strstr-workaround.exp -@@ -0,0 +1,108 @@ -+# Copyright (C) 2012 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 . -+ -+# Workaround for: -+# invalid IFUNC DW_AT_linkage_name: memmove strstr time -+# http://sourceware.org/bugzilla/show_bug.cgi?id=14166 -+ -+if {[skip_shlib_tests]} { -+ return 0 -+} -+ -+set testfile "gnu-ifunc-strstr-workaround" -+set executable ${testfile} -+set srcfile start.c -+set binfile [standard_output_file ${executable}] -+ -+if [prepare_for_testing ${testfile}.exp $executable $srcfile] { -+ return -1 -+} -+ -+if ![runto_main] { -+ return 0 -+} -+ -+set test "ptype atoi" -+gdb_test_multiple $test $test { -+ -re "type = int \\(const char \\*\\)\r\n$gdb_prompt $" { -+ pass $test -+ } -+ -re "type = int \\(\\)\r\n$gdb_prompt $" { -+ untested "$test (no DWARF)" -+ return 0 -+ } -+} -+ -+set addr "" -+set test "print strstr" -+gdb_test_multiple $test $test { -+ -re " = {} (0x\[0-9a-f\]+) \r\n$gdb_prompt $" { -+ set addr $expect_out(1,string) -+ pass $test -+ } -+ -re " = {} (0x\[0-9a-f\]+) <__strstr>\r\n$gdb_prompt $" { -+ set addr $expect_out(1,string) -+ pass "$test (GDB workaround)" -+ } -+ -re " = {} (0x\[0-9a-f\]+) <__libc_strstr>\r\n$gdb_prompt $" { -+ set addr $expect_out(1,string) -+ pass "$test (fixed glibc)" -+ } -+ -re " = {char \\*\\(const char \\*, const char \\*\\)} 0x\[0-9a-f\]+ \r\n$gdb_prompt $" { -+ untested "$test (gnu-ifunc not in use by glibc)" -+ return 0 -+ } -+} -+ -+set test "info sym" -+gdb_test_multiple "info sym $addr" $test { -+ -re "strstr in section \\.text of /lib\[^/\]*/libc.so.6\r\n$gdb_prompt $" { -+ pass $test -+ } -+ -re " = {char \\*\\(const char \\*, const char \\*\\)} 0x\[0-9a-f\]+ \r\n$gdb_prompt $" { -+ # unexpected -+ xfail "$test (not in libc.so.6)" -+ return 0 -+ } -+} -+ -+set test "info addr strstr" -+gdb_test_multiple $test $test { -+ -re "Symbol \"strstr\" is a function at address $addr\\.\r\n$gdb_prompt $" { -+ fail "$test (DWARF for strstr)" -+ } -+ -re "Symbol \"strstr\" is at $addr in a file compiled without debugging\\.\r\n$gdb_prompt $" { -+ pass "$test" -+ } -+} -+ -+set test "print strstr second time" -+gdb_test_multiple "print strstr" $test { -+ -re " = {} $addr \r\n$gdb_prompt $" { -+ pass $test -+ } -+ -re " = {} $addr <__strstr>\r\n$gdb_prompt $" { -+ pass "$test (GDB workaround)" -+ } -+ -re " = {} $addr <__libc_strstr>\r\n$gdb_prompt $" { -+ pass "$test (fixed glibc)" -+ } -+ -re " = {void \\*\\(void\\)} 0x\[0-9a-f\]+ \r\n$gdb_prompt $" { -+ fail $test -+ } -+} -+ -+gdb_test {print strstr("abc","b")} { = 0x[0-9a-f]+ "bc"} -+gdb_test {print strstr("def","e")} { = 0x[0-9a-f]+ "ef"} diff --git a/gdb-gnat-dwarf-crash-3of3.patch b/gdb-gnat-dwarf-crash-3of3.patch index a20da466409a440b8bba85d07ebe78b091da5d7a..516412b6f5c6b14136ce71a975d924b9da83b689 100644 --- a/gdb-gnat-dwarf-crash-3of3.patch +++ b/gdb-gnat-dwarf-crash-3of3.patch @@ -1,11 +1,3 @@ -From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 -From: Fedora GDB patches -Date: Fri, 27 Oct 2017 21:07:50 +0200 -Subject: gdb-gnat-dwarf-crash-3of3.patch - -;; Fix crash of -readnow /usr/lib/debug/usr/bin/gnatbind.debug (BZ 1069211). -;;=push+jan - http://sourceware.org/ml/gdb-patches/2014-02/msg00731.html --6TrnltStXW4iwmi0 @@ -164,73 +156,3 @@ diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c } /* Convert a native/host siginfo object, into/from the siginfo in the -diff --git a/gdb/testsuite/gdb.threads/attach-stopped.exp b/gdb/testsuite/gdb.threads/attach-stopped.exp ---- a/gdb/testsuite/gdb.threads/attach-stopped.exp -+++ b/gdb/testsuite/gdb.threads/attach-stopped.exp -@@ -56,7 +56,65 @@ proc corefunc { threadtype } { - gdb_reinitialize_dir $srcdir/$subdir - gdb_load ${binfile} - -- # Verify that we can attach to the stopped process. -+ # Verify that we can attach to the process by first giving its -+ # executable name via the file command, and using attach with the -+ # process ID. -+ -+ set test "$threadtype: set file, before attach1 to stopped process" -+ gdb_test_multiple "file $binfile" "$test" { -+ -re "Load new symbol table from.*y or n. $" { -+ gdb_test "y" "Reading symbols from $escapedbinfile\.\.\.*done." \ -+ "$test (re-read)" -+ } -+ -re "Reading symbols from $escapedbinfile\.\.\.*done.*$gdb_prompt $" { -+ pass "$test" -+ } -+ } -+ -+ set test "$threadtype: attach1 to stopped, after setting file" -+ gdb_test_multiple "attach $testpid" "$test" { -+ -re "Attaching to program.*`?$escapedbinfile'?, process $testpid.*$gdb_prompt $" { -+ pass "$test" -+ } -+ } -+ -+ # ".*sleep.*clone.*" would fail on s390x as bt stops at START_THREAD there. -+ if {[string equal $threadtype threaded]} { -+ gdb_test "thread apply all bt" ".*sleep.*start_thread.*" "$threadtype: attach1 to stopped bt" -+ } else { -+ gdb_test "bt" ".*sleep.*main.*" "$threadtype: attach1 to stopped bt" -+ } -+ -+ # Exit and detach the process. -+ -+ gdb_exit -+ -+ # Avoid some race: -+ sleep 2 -+ -+ if [catch {open /proc/${testpid}/status r} fileid] { -+ set line2 "NOTFOUND" -+ } else { -+ gets $fileid line1; -+ gets $fileid line2; -+ close $fileid; -+ } -+ -+ set test "$threadtype: attach1, exit leaves process stopped" -+ if {[string match "*(stopped)*" $line2]} { -+ pass $test -+ } else { -+ fail $test -+ } -+ -+ # At this point, the process should still be stopped -+ -+ gdb_start -+ gdb_reinitialize_dir $srcdir/$subdir -+ gdb_load ${binfile} -+ -+ # Verify that we can attach to the process just by giving the -+ # process ID. - - set test "$threadtype: attach2 to stopped, after setting file" - gdb_test_multiple "attach $testpid" "$test" { diff --git a/gdb-python-gil.patch b/gdb-python-gil.patch index 9ff2e45c7ca5bb400aec1abd413dd0f2dc5474e8..1b1305caaabc67c5648a79d2cf3c7a6ade79885d 100644 --- a/gdb-python-gil.patch +++ b/gdb-python-gil.patch @@ -1,11 +1,3 @@ -From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 -From: Fedora GDB patches -Date: Fri, 27 Oct 2017 21:07:50 +0200 -Subject: gdb-python-gil.patch - -;; Fix Python GIL with gdb.execute("continue") (Phil Muldoon, BZ 1116957). -;;=push - diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi --- a/gdb/doc/python.texi +++ b/gdb/doc/python.texi @@ -114,128 +106,3 @@ diff --git a/gdb/python/python.c b/gdb/python/python.c } END_CATCH -diff --git a/gdb/testsuite/gdb.python/py-gil-mthread.c b/gdb/testsuite/gdb.python/py-gil-mthread.c -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.python/py-gil-mthread.c -@@ -0,0 +1,13 @@ -+#include -+#include -+ -+int -+main (void) -+{ -+ int i; -+ for (i = 0; i < 10; i++) -+ { -+ sleep (1); /* break-here */ -+ printf ("Sleeping %d\n", i); -+ } -+} -diff --git a/gdb/testsuite/gdb.python/py-gil-mthread.exp b/gdb/testsuite/gdb.python/py-gil-mthread.exp -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.python/py-gil-mthread.exp -@@ -0,0 +1,69 @@ -+# Copyright (C) 2014 Free Software Foundation, Inc. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+standard_testfile .c .py -+set executable $testfile -+ -+if { [prepare_for_testing $testfile.exp $executable $srcfile] } { -+ return -1 -+} -+ -+# Skip all tests if Python scripting is not enabled. -+if { [skip_python_tests] } { continue } -+ -+if ![runto_main] { -+ return -1 -+} -+ -+gdb_breakpoint $srcfile:[gdb_get_line_number "break-here"] temporary -+gdb_continue_to_breakpoint "break-here" ".* break-here .*" -+ -+set test "response" -+set timeout 60 -+set sleeping_last -1 -+set hello_last 0 -+set minimal 5 -+gdb_test_multiple "python exec (open ('$srcdir/$subdir/$srcfile2').read ())" $test { -+ -re "Error: unable to start thread\r\n" { -+ fail $test -+ # Not $gdb_prompt-synced! -+ } -+ -re "Sleeping (\[0-9\]+)\r\n" { -+ set n $expect_out(1,string) -+ if { $sleeping_last + 1 != $n } { -+ fail $test -+ } else { -+ set sleeping_last $n -+ if { $sleeping_last >= $minimal && $hello_last >= $minimal } { -+ pass $test -+ } else { -+ exp_continue -+ } -+ } -+ } -+ -re "Hello \\( (\[0-9\]+) \\)\r\n" { -+ set n $expect_out(1,string) -+ if { $hello_last + 1 != $n } { -+ fail $test -+ } else { -+ set hello_last $n -+ if { $sleeping_last >= $minimal && $hello_last >= $minimal } { -+ pass $test -+ } else { -+ exp_continue -+ } -+ } -+ } -+} -diff --git a/gdb/testsuite/gdb.python/py-gil-mthread.py b/gdb/testsuite/gdb.python/py-gil-mthread.py -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.python/py-gil-mthread.py -@@ -0,0 +1,28 @@ -+try: -+ import thread -+except: -+ import _thread -+import time -+import gdb -+ -+# Define a function for the thread -+def print_thread_hello(): -+ count = 0 -+ while count < 10: -+ time.sleep(1) -+ count += 1 -+ print ("Hello ( %d )" % count) -+ -+# Create a threads a continue -+try: -+ thread.start_new_thread (print_thread_hello, ()) -+ gdb.execute ("continue", release_gil=True) -+except: -+ try: -+ _thread.start_new_thread (print_thread_hello, ()) -+ gdb.execute ("continue", release_gil=True) -+ except: -+ print ("Error: unable to start thread") -+ -+while 1: -+ pass diff --git a/gdb-rhbz1350436-type-printers-error.patch b/gdb-rhbz1350436-type-printers-error.patch deleted file mode 100644 index d06e1214f056adcd31e2a17bc8588841fb2bc17c..0000000000000000000000000000000000000000 --- a/gdb-rhbz1350436-type-printers-error.patch +++ /dev/null @@ -1,81 +0,0 @@ -From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 -From: Fedora GDB patches -Date: Fri, 27 Oct 2017 21:07:50 +0200 -Subject: gdb-rhbz1350436-type-printers-error.patch - -;; Test 'info type-printers' Python error (RH BZ 1350436). -;;=fedoratest - -Typo in Python support breaks info type-printers command -https://bugzilla.redhat.com/show_bug.cgi?id=1350436 - -[testsuite patch] PR python/17136: 'info type-printers' causes an exception when there are per-objfile printers -https://sourceware.org/ml/gdb-patches/2016-06/msg00455.html - -diff --git a/gdb/testsuite/gdb.python/py-typeprint.cc b/gdb/testsuite/gdb.python/py-typeprint.cc ---- a/gdb/testsuite/gdb.python/py-typeprint.cc -+++ b/gdb/testsuite/gdb.python/py-typeprint.cc -@@ -31,6 +31,12 @@ templ s; - - basic_string bs; - -+class Other -+{ -+}; -+ -+Other ovar; -+ - int main() - { - return 0; -diff --git a/gdb/testsuite/gdb.python/py-typeprint.exp b/gdb/testsuite/gdb.python/py-typeprint.exp ---- a/gdb/testsuite/gdb.python/py-typeprint.exp -+++ b/gdb/testsuite/gdb.python/py-typeprint.exp -@@ -50,3 +50,7 @@ gdb_test_no_output "enable type-printer string" - gdb_test "whatis bs" "string" "whatis with enabled printer" - - gdb_test "whatis s" "templ" -+ -+gdb_test "info type-printers" "Type printers for \[^\r\n\]*/py-typeprint:\r\n *other\r\n.*" \ -+ "info type-printers for other" -+gdb_test "whatis ovar" "type = Another" -diff --git a/gdb/testsuite/gdb.python/py-typeprint.py b/gdb/testsuite/gdb.python/py-typeprint.py ---- a/gdb/testsuite/gdb.python/py-typeprint.py -+++ b/gdb/testsuite/gdb.python/py-typeprint.py -@@ -15,7 +15,7 @@ - - import gdb - --class Recognizer(object): -+class StringRecognizer(object): - def __init__(self): - self.enabled = True - -@@ -30,6 +30,26 @@ class StringTypePrinter(object): - self.enabled = True - - def instantiate(self): -- return Recognizer() -+ return StringRecognizer() - - gdb.type_printers.append(StringTypePrinter()) -+ -+class OtherRecognizer(object): -+ def __init__(self): -+ self.enabled = True -+ -+ def recognize(self, type_obj): -+ if type_obj.tag == 'Other': -+ return 'Another' -+ return None -+ -+class OtherTypePrinter(object): -+ def __init__(self): -+ self.name = 'other' -+ self.enabled = True -+ -+ def instantiate(self): -+ return OtherRecognizer() -+ -+import gdb.types -+gdb.types.register_type_printer(gdb.objfiles()[0], OtherTypePrinter()) diff --git a/gdb-rhbz1491128-batch-mode-exit-status-2of2.patch b/gdb-rhbz1491128-batch-mode-exit-status-2of2.patch deleted file mode 100644 index b1ba52393514bd48061422eb0fb91b359c28ac1a..0000000000000000000000000000000000000000 --- a/gdb-rhbz1491128-batch-mode-exit-status-2of2.patch +++ /dev/null @@ -1,65 +0,0 @@ -From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 -From: Gary Benson -Date: Mon, 3 Sep 2018 16:14:55 +0100 -Subject: gdb-rhbz1491128-batch-mode-exit-status-2of2.patch - -;; Fix for 'gdb in batch mode always exit with status 0' (Gary Benson) -;; RHBZ #1491128 - -Fix batch exit status test failure on Fedora 28 - -This commit adds calls to remote_close and clear_gdb_spawn_id to -gdb.base/batch-exit-status.exp, fixing failures reported by buildbot -on Fedora 28 where gdb_spawn_id not being reset by the previous test -caused default_gdb_spawn to return without spawning. - -This commit also changes the test to use detect GDB's exit using -gdb_test_multiple expecting 'eof', rather than using 'wait -i' alone. -This means the testcase won't hang forever on failure as fixed in -gdb.base/quit.exp by commit 15763a09d4ae ("Fix 'gdb.base/quit.exp -hangs forever' if the test fails"). - -gdb/testsuite/ChangeLog: - - * gdb.base/batch-exit-status.exp: Use gdb_test_multiple and expect - 'eof' before 'wait -i'. Use remote_close and clear_gdb_spawn_id. - -diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog ---- a/gdb/testsuite/ChangeLog -+++ b/gdb/testsuite/ChangeLog -@@ -1,3 +1,8 @@ -+2018-09-04 Gary Benson -+ -+ * gdb.base/batch-exit-status.exp: Use gdb_test_multiple and expect -+ 'eof' before 'wait -i'. Use remote_close and clear_gdb_spawn_id. -+ - 2018-08-16 Gary Benson - - PR gdb/13000: -diff --git a/gdb/testsuite/gdb.base/batch-exit-status.exp b/gdb/testsuite/gdb.base/batch-exit-status.exp ---- a/gdb/testsuite/gdb.base/batch-exit-status.exp -+++ b/gdb/testsuite/gdb.base/batch-exit-status.exp -@@ -29,11 +29,18 @@ proc _test_exit_status {expect_status cmdline_opts} { - return - } - -- set result [wait -i $gdb_spawn_id] -- verbose $result -- gdb_assert { [lindex $result 2] == 0 } -- set actual_status [lindex $result 3] -- gdb_assert { $actual_status == $expect_status } -+ gdb_test_multiple "" "run til exit" { -+ eof { -+ set result [wait -i $gdb_spawn_id] -+ verbose $result -+ -+ gdb_assert { [lindex $result 2] == 0 } -+ gdb_assert { [lindex $result 3] == $expect_status } -+ -+ remote_close host -+ clear_gdb_spawn_id -+ } -+ } - } - - proc test_exit_status {expect_status cmdline_opts} { diff --git a/gdb-rhbz881849-ipv6-1of3.patch b/gdb-rhbz881849-ipv6-1of3.patch index 542db3a59f48e4f0d224255300dcd84a582bcc98..ec4768e4cc188565741e696f9ba4d231ade753bb 100644 --- a/gdb-rhbz881849-ipv6-1of3.patch +++ b/gdb-rhbz881849-ipv6-1of3.patch @@ -1,10 +1,3 @@ -From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 -From: Sergio Durigan Junior -Date: Fri, 18 May 2018 01:29:24 -0400 -Subject: gdb-rhbz881849-ipv6-1of3.patch - -;; Implement IPv6 support for GDB/gdbserver (RH BZ 881849, Sergio Durigan Junior). - Implement IPv6 support for GDB/gdbserver This patch implements IPv6 support for both GDB and gdbserver. Based @@ -1406,529 +1399,3 @@ diff --git a/gdb/ser-tcp.c b/gdb/ser-tcp.c } #ifdef SIGPIPE -diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog ---- a/gdb/testsuite/ChangeLog -+++ b/gdb/testsuite/ChangeLog -@@ -1,3 +1,23 @@ -+2018-07-11 Sergio Durigan Junior -+ Jan Kratochvil -+ Paul Fertser -+ Tsutomu Seki -+ -+ * README (Testsuite Parameters): Mention new 'GDB_TEST_SOCKETHOST' -+ parameter. -+ * boards/native-extended-gdbserver.exp: Do not set 'sockethost' -+ by default. -+ * boards/native-gdbserver.exp: Likewise. -+ * gdb.server/run-without-local-binary.exp: Improve regexp used -+ for detecting when a remote debugging connection succeeds. -+ * gdb.server/server-connect.exp: New file. -+ * lib/gdbserver-support.exp (gdbserver_default_get_comm_port): -+ Do not prefix the port number with ":". -+ (gdbserver_start): New global GDB_TEST_SOCKETHOST. Implement -+ support for detecting and using it. Add '$debughost_gdbserver' -+ to the list of arguments used to start gdbserver. Handle case -+ when gdbserver cannot resolve a network name. -+ - 2018-08-31 Tom Tromey - - * gdb.rust/simple.rs: Rename second variable "v". -diff --git a/gdb/testsuite/README b/gdb/testsuite/README ---- a/gdb/testsuite/README -+++ b/gdb/testsuite/README -@@ -259,6 +259,20 @@ This make (not runtest) variable is used to specify whether the - testsuite preloads the read1.so library into expect. Any non-empty - value means true. See "Race detection" below. - -+GDB_TEST_SOCKETHOST -+ -+This variable can provide the hostname/address that should be used -+when performing GDBserver-related tests. This is useful in some -+situations, e.g., when you want to test the IPv6 connectivity of GDB -+and GDBserver, or when using a different hostname/address is needed. -+For example, to make GDB and GDBserver use IPv6-only connections, you -+can do: -+ -+ make check TESTS="gdb.server/*.exp" RUNTESTFLAGS='GDB_TEST_SOCKETHOST=tcp6:[::1]' -+ -+Note that only a hostname/address can be provided, without a port -+number. -+ - Race detection - ************** - -diff --git a/gdb/testsuite/boards/native-extended-gdbserver.exp b/gdb/testsuite/boards/native-extended-gdbserver.exp ---- a/gdb/testsuite/boards/native-extended-gdbserver.exp -+++ b/gdb/testsuite/boards/native-extended-gdbserver.exp -@@ -24,8 +24,6 @@ load_generic_config "extended-gdbserver" - load_board_description "gdbserver-base" - load_board_description "local-board" - --set_board_info sockethost "localhost:" -- - # We will be using the extended GDB remote protocol. - set_board_info gdb_protocol "extended-remote" - -diff --git a/gdb/testsuite/boards/native-gdbserver.exp b/gdb/testsuite/boards/native-gdbserver.exp ---- a/gdb/testsuite/boards/native-gdbserver.exp -+++ b/gdb/testsuite/boards/native-gdbserver.exp -@@ -30,7 +30,6 @@ set_board_info gdb,do_reload_on_run 1 - # There's no support for argument-passing (yet). - set_board_info noargs 1 - --set_board_info sockethost "localhost:" - set_board_info use_gdb_stub 1 - set_board_info exit_is_reliable 1 - -diff --git a/gdb/testsuite/gdb.server/run-without-local-binary.exp b/gdb/testsuite/gdb.server/run-without-local-binary.exp ---- a/gdb/testsuite/gdb.server/run-without-local-binary.exp -+++ b/gdb/testsuite/gdb.server/run-without-local-binary.exp -@@ -53,7 +53,7 @@ save_vars { GDBFLAGS } { - set use_gdb_stub 0 - - gdb_test "target ${gdbserver_protocol} ${gdbserver_gdbport}" \ -- "Remote debugging using $gdbserver_gdbport" \ -+ "Remote debugging using [string_to_regexp $gdbserver_gdbport]" \ - "connect to gdbserver" - - gdb_test "run" \ -diff --git a/gdb/testsuite/gdb.server/server-connect.exp b/gdb/testsuite/gdb.server/server-connect.exp -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.server/server-connect.exp -@@ -0,0 +1,111 @@ -+# This testcase is part of GDB, the GNU debugger. -+# -+# Copyright 2018 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 multiple types of connection (IPv4, IPv6, TCP, UDP) and make -+# sure both gdbserver and GDB work. -+ -+load_lib gdbserver-support.exp -+ -+standard_testfile normal.c -+ -+if {[skip_gdbserver_tests]} { -+ return 0 -+} -+ -+# We want to have control over where we start gdbserver. -+if { [is_remote target] } { -+ return 0 -+} -+ -+if { [prepare_for_testing "failed to prepare" $testfile $srcfile debug] } { -+ return -1 -+} -+ -+# Make sure we're disconnected, in case we're testing with an -+# extended-remote board, therefore already connected. -+gdb_test "disconnect" ".*" -+ -+set target_exec [gdbserver_download_current_prog] -+ -+# An array containing the test instructions for each scenario. The -+# description of each field is as follows: -+# -+# - The connection specification to be used when starting -+# gdbserver/GDB. This string will be used to set the -+# GDB_TEST_SOCKETHOST when calling gdbserver_start. -+# -+# - A flag indicating whether gdbserver should fail when we attempt to -+# start it. Useful when testing erroneous connection specs such as -+# "tcp8:". -+# -+# - The prefix that should be prepended to the test messages. -+set test_params \ -+ { \ -+ { "tcp4:127.0.0.1" 0 "tcp4" } \ -+ { "tcp6:::1" 0 "tcp6" } \ -+ { "tcp6:[::1]" 0 "tcp6-with-brackets" } \ -+ { "tcp:localhost" 0 "tcp" } \ -+ { "udp4:127.0.0.1" 0 "udp4" } \ -+ { "udp6:::1" 0 "udp6" } \ -+ { "udp6:[::1]" 0 "udp6-with-brackets" } \ -+ { "tcp8:123" 1 "tcp8" } \ -+ { "udp123:::" 1 "udp123" } \ -+ { "garbage:1234" 1 "garbage:1234" } \ -+ } -+ -+# The best way to test different types of connections is to set the -+# GDB_TEST_SOCKETHOST variable accordingly. -+save_vars { GDB_TEST_SOCKETHOST } { -+ foreach line $test_params { -+ set sockhost [lindex $line 0] -+ set gdbserver_should_fail [lindex $line 1] -+ set prefix [lindex $line 2] -+ -+ with_test_prefix $prefix { -+ set GDB_TEST_SOCKETHOST $sockhost -+ set test "start gdbserver" -+ -+ # Try to start gdbserver. -+ set catchres [catch {set res [gdbserver_start "" $target_exec]} errmsg] -+ -+ if { $catchres != 0 } { -+ if { $gdbserver_should_fail } { -+ pass "$test: gdbserver failed as expected" -+ } else { -+ fail "$test: $errmsg" -+ } -+ continue -+ } else { -+ if { $gdbserver_should_fail } { -+ fail "$test: gdbserver should fail but did not" -+ } else { -+ pass "$test" -+ } -+ } -+ -+ set gdbserver_protocol [lindex $res 0] -+ set gdbserver_gdbport [lindex $res 1] -+ set test "connect to gdbserver using $sockhost" -+ -+ if { [gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport] == 0 } { -+ pass $test -+ } else { -+ fail $test -+ } -+ } -+ } -+} -diff --git a/gdb/testsuite/lib/gdbserver-support.exp b/gdb/testsuite/lib/gdbserver-support.exp ---- a/gdb/testsuite/lib/gdbserver-support.exp -+++ b/gdb/testsuite/lib/gdbserver-support.exp -@@ -211,7 +211,7 @@ proc gdbserver_default_get_remote_address { host port } { - # Default routine to compute the "comm" argument for gdbserver. - - proc gdbserver_default_get_comm_port { port } { -- return ":$port" -+ return "$port" - } - - # Start a gdbserver process with initial OPTIONS and trailing ARGUMENTS. -@@ -221,6 +221,7 @@ proc gdbserver_default_get_comm_port { port } { - - proc gdbserver_start { options arguments } { - global portnum -+ global GDB_TEST_SOCKETHOST - - # Port id -- either specified in baseboard file, or managed here. - if [target_info exists gdb,socketport] { -@@ -231,10 +232,22 @@ proc gdbserver_start { options arguments } { - } - - # Extract the local and remote host ids from the target board struct. -- if [target_info exists sockethost] { -+ if { [info exists GDB_TEST_SOCKETHOST] } { -+ # The user is not supposed to provide a port number, just a -+ # hostname/address, therefore we add the trailing ":" here. -+ set debughost "${GDB_TEST_SOCKETHOST}:" -+ # Escape open and close square brackets. -+ set debughost_tmp [string map { [ \\[ ] \\] } $debughost] -+ # We need a "gdbserver" version of the debughost, which will -+ # have the possible connection prefix stripped. This is -+ # because gdbserver currently doesn't recognize the prefixes. -+ regsub -all "^\(tcp:|udp:|tcp4:|udp4:|tcp6:|udp6:\)" $debughost_tmp "" debughost_gdbserver -+ } elseif [target_info exists sockethost] { - set debughost [target_info sockethost] -+ set debughost_gdbserver $debughost - } else { - set debughost "localhost:" -+ set debughost_gdbserver $debughost - } - - # Some boards use a different value for the port that is passed to -@@ -277,8 +290,14 @@ proc gdbserver_start { options arguments } { - if { $options != "" } { - append gdbserver_command " $options" - } -+ if { $debughost_gdbserver != "" } { -+ append gdbserver_command " $debughost_gdbserver" -+ } - if { $portnum != "" } { -- append gdbserver_command " [$get_comm_port $portnum]" -+ if { $debughost_gdbserver == "" } { -+ append gdbserver_command " " -+ } -+ append gdbserver_command "[$get_comm_port $portnum]" - } - if { $arguments != "" } { - append gdbserver_command " $arguments" -@@ -307,6 +326,9 @@ proc gdbserver_start { options arguments } { - continue - } - } -+ -re ".*: cannot resolve name: Name or service not known\r\n" { -+ error "gdbserver cannot resolve name." -+ } - timeout { - error "Timeout waiting for gdbserver response." - } -diff --git a/gdb/unittests/parse-connection-spec-selftests.c b/gdb/unittests/parse-connection-spec-selftests.c -new file mode 100644 ---- /dev/null -+++ b/gdb/unittests/parse-connection-spec-selftests.c -@@ -0,0 +1,249 @@ -+/* Self tests for parsing connection specs for GDB, the GNU debugger. -+ -+ Copyright (C) 2018 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 . */ -+ -+#include "defs.h" -+#include "selftest.h" -+#include "common/netstuff.h" -+#include "diagnostics.h" -+#ifdef USE_WIN32API -+#include -+#include -+#else -+#include -+#include -+#include -+#include -+#include -+#endif -+ -+namespace selftests { -+namespace parse_connection_spec_tests { -+ -+/* Auxiliary struct that holds info about a specific test for a -+ connection spec. */ -+ -+struct parse_conn_test -+{ -+ /* The connection spec. */ -+ const char *connspec; -+ -+ /* Expected result from 'parse_connection_spec'. */ -+ parsed_connection_spec expected_result; -+ -+ /* True if this test should fail, false otherwise. If true, only -+ the CONNSPEC field should be considered as valid. */ -+ bool should_fail; -+ -+ /* The expected AI_FAMILY to be found on the 'struct addrinfo' -+ HINT. */ -+ int exp_ai_family; -+ -+ /* The expected AI_SOCKTYPE to be found on the 'struct addrinfo' -+ HINT. */ -+ int exp_ai_socktype; -+ -+ /* The expected AI_PROTOCOL to be found on the 'struct addrinfo' -+ HINT. */ -+ int exp_ai_protocol; -+}; -+ -+/* Some defines to help us fill a 'struct parse_conn_test'. */ -+ -+/* Initialize a full entry. */ -+#define INIT_ENTRY(ADDR, EXP_HOST, EXP_PORT, SHOULD_FAIL, EXP_AI_FAMILY, \ -+ EXP_AI_SOCKTYPE, EXP_AI_PROTOCOL) \ -+ { ADDR, { EXP_HOST, EXP_PORT }, SHOULD_FAIL, EXP_AI_FAMILY, \ -+ EXP_AI_SOCKTYPE, EXP_AI_PROTOCOL } -+ -+/* Initialize an unprefixed entry. In this case, we don't expect -+ anything on the 'struct addrinfo' HINT. */ -+#define INIT_UNPREFIXED_ENTRY(ADDR, EXP_HOST, EXP_PORT) \ -+ INIT_ENTRY (ADDR, EXP_HOST, EXP_PORT, false, 0, 0, 0) -+ -+/* Initialized an unprefixed IPv6 entry. In this case, we don't -+ expect anything on the 'struct addrinfo' HINT. */ -+#define INIT_UNPREFIXED_IPV6_ENTRY(ADDR, EXP_HOST, EXP_PORT) \ -+ INIT_ENTRY (ADDR, EXP_HOST, EXP_PORT, false, AF_INET6, 0, 0) -+ -+/* Initialize a prefixed entry. */ -+#define INIT_PREFIXED_ENTRY(ADDR, EXP_HOST, EXP_PORT, EXP_AI_FAMILY, \ -+ EXP_AI_SOCKTYPE, EXP_AI_PROTOCOL) \ -+ INIT_ENTRY (ADDR, EXP_HOST, EXP_PORT, false, EXP_AI_FAMILY, \ -+ EXP_AI_SOCKTYPE, EXP_AI_PROTOCOL) -+ -+/* Initialize an entry prefixed with "tcp4:". */ -+#define INIT_PREFIXED_IPV4_TCP(ADDR, EXP_HOST, EXP_PORT) \ -+ INIT_PREFIXED_ENTRY (ADDR, EXP_HOST, EXP_PORT, AF_INET, SOCK_STREAM, \ -+ IPPROTO_TCP) -+ -+/* Initialize an entry prefixed with "tcp6:". */ -+#define INIT_PREFIXED_IPV6_TCP(ADDR, EXP_HOST, EXP_PORT) \ -+ INIT_PREFIXED_ENTRY (ADDR, EXP_HOST, EXP_PORT, AF_INET6, SOCK_STREAM, \ -+ IPPROTO_TCP) -+ -+/* Initialize an entry prefixed with "udp4:". */ -+#define INIT_PREFIXED_IPV4_UDP(ADDR, EXP_HOST, EXP_PORT) \ -+ INIT_PREFIXED_ENTRY (ADDR, EXP_HOST, EXP_PORT, AF_INET, SOCK_DGRAM, \ -+ IPPROTO_UDP) -+ -+/* Initialize an entry prefixed with "udp6:". */ -+#define INIT_PREFIXED_IPV6_UDP(ADDR, EXP_HOST, EXP_PORT) \ -+ INIT_PREFIXED_ENTRY (ADDR, EXP_HOST, EXP_PORT, AF_INET6, SOCK_DGRAM, \ -+ IPPROTO_UDP) -+ -+/* Initialize a bogus entry, i.e., a connection spec that should -+ fail. */ -+#define INIT_BOGUS_ENTRY(ADDR) \ -+ INIT_ENTRY (ADDR, "", "", true, 0, 0, 0) -+ -+/* The variable which holds all of our tests. */ -+ -+static const parse_conn_test conn_test[] = -+ { -+ /* Unprefixed addresses. */ -+ -+ /* IPv4, host and port present. */ -+ INIT_UNPREFIXED_ENTRY ("127.0.0.1:1234", "127.0.0.1", "1234"), -+ /* IPv4, only host. */ -+ INIT_UNPREFIXED_ENTRY ("127.0.0.1", "127.0.0.1", ""), -+ /* IPv4, missing port. */ -+ INIT_UNPREFIXED_ENTRY ("127.0.0.1:", "127.0.0.1", ""), -+ -+ /* IPv6, host and port present, no brackets. */ -+ INIT_UNPREFIXED_ENTRY ("::1:1234", "::1", "1234"), -+ /* IPv6, missing port, no brackets. */ -+ INIT_UNPREFIXED_ENTRY ("::1:", "::1", ""), -+ /* IPv6, host and port present, with brackets. */ -+ INIT_UNPREFIXED_IPV6_ENTRY ("[::1]:1234", "::1", "1234"), -+ /* IPv6, only host, with brackets. */ -+ INIT_UNPREFIXED_IPV6_ENTRY ("[::1]", "::1", ""), -+ /* IPv6, missing port, with brackets. */ -+ INIT_UNPREFIXED_IPV6_ENTRY ("[::1]:", "::1", ""), -+ -+ /* Unspecified, only port. */ -+ INIT_UNPREFIXED_ENTRY (":1234", "localhost", "1234"), -+ -+ /* Prefixed addresses. */ -+ -+ /* Prefixed "tcp4:" IPv4, host and port presents. */ -+ INIT_PREFIXED_IPV4_TCP ("tcp4:127.0.0.1:1234", "127.0.0.1", "1234"), -+ /* Prefixed "tcp4:" IPv4, only port. */ -+ INIT_PREFIXED_IPV4_TCP ("tcp4::1234", "localhost", "1234"), -+ /* Prefixed "tcp4:" IPv4, only host. */ -+ INIT_PREFIXED_IPV4_TCP ("tcp4:127.0.0.1", "127.0.0.1", ""), -+ /* Prefixed "tcp4:" IPv4, missing port. */ -+ INIT_PREFIXED_IPV4_TCP ("tcp4:127.0.0.1:", "127.0.0.1", ""), -+ -+ /* Prefixed "udp4:" IPv4, host and port present. */ -+ INIT_PREFIXED_IPV4_UDP ("udp4:127.0.0.1:1234", "127.0.0.1", "1234"), -+ /* Prefixed "udp4:" IPv4, only port. */ -+ INIT_PREFIXED_IPV4_UDP ("udp4::1234", "localhost", "1234"), -+ /* Prefixed "udp4:" IPv4, only host. */ -+ INIT_PREFIXED_IPV4_UDP ("udp4:127.0.0.1", "127.0.0.1", ""), -+ /* Prefixed "udp4:" IPv4, missing port. */ -+ INIT_PREFIXED_IPV4_UDP ("udp4:127.0.0.1:", "127.0.0.1", ""), -+ -+ -+ /* Prefixed "tcp6:" IPv6, host and port present. */ -+ INIT_PREFIXED_IPV6_TCP ("tcp6:::1:1234", "::1", "1234"), -+ /* Prefixed "tcp6:" IPv6, only port. */ -+ INIT_PREFIXED_IPV6_TCP ("tcp6::1234", "localhost", "1234"), -+ /* Prefixed "tcp6:" IPv6, only host. */ -+ //INIT_PREFIXED_IPV6_TCP ("tcp6:::1", "::1", ""), -+ /* Prefixed "tcp6:" IPv6, missing port. */ -+ INIT_PREFIXED_IPV6_TCP ("tcp6:::1:", "::1", ""), -+ -+ /* Prefixed "udp6:" IPv6, host and port present. */ -+ INIT_PREFIXED_IPV6_UDP ("udp6:::1:1234", "::1", "1234"), -+ /* Prefixed "udp6:" IPv6, only port. */ -+ INIT_PREFIXED_IPV6_UDP ("udp6::1234", "localhost", "1234"), -+ /* Prefixed "udp6:" IPv6, only host. */ -+ //INIT_PREFIXED_IPV6_UDP ("udp6:::1", "::1", ""), -+ /* Prefixed "udp6:" IPv6, missing port. */ -+ INIT_PREFIXED_IPV6_UDP ("udp6:::1:", "::1", ""), -+ -+ /* Prefixed "tcp6:" IPv6 with brackets, host and port present. */ -+ INIT_PREFIXED_IPV6_TCP ("tcp6:[::1]:1234", "::1", "1234"), -+ /* Prefixed "tcp6:" IPv6 with brackets, only host. */ -+ INIT_PREFIXED_IPV6_TCP ("tcp6:[::1]", "::1", ""), -+ /* Prefixed "tcp6:" IPv6 with brackets, missing port. */ -+ INIT_PREFIXED_IPV6_TCP ("tcp6:[::1]:", "::1", ""), -+ -+ /* Prefixed "udp6:" IPv6 with brackets, host and port present. */ -+ INIT_PREFIXED_IPV6_UDP ("udp6:[::1]:1234", "::1", "1234"), -+ /* Prefixed "udp6:" IPv6 with brackets, only host. */ -+ INIT_PREFIXED_IPV6_UDP ("udp6:[::1]", "::1", ""), -+ /* Prefixed "udp6:" IPv6 with brackets, missing port. */ -+ INIT_PREFIXED_IPV6_UDP ("udp6:[::1]:", "::1", ""), -+ -+ -+ /* Bogus addresses. */ -+ INIT_BOGUS_ENTRY ("tcp6:[::1]123:44"), -+ INIT_BOGUS_ENTRY ("[::1"), -+ INIT_BOGUS_ENTRY ("tcp6:::1]:"), -+ }; -+ -+/* Test a connection spec C. */ -+ -+static void -+test_conn (const parse_conn_test &c) -+{ -+ struct addrinfo hint; -+ parsed_connection_spec ret; -+ -+ memset (&hint, 0, sizeof (hint)); -+ -+ TRY -+ { -+ ret = parse_connection_spec (c.connspec, &hint); -+ } -+ CATCH (ex, RETURN_MASK_ERROR) -+ { -+ /* If we caught an error, we should check if this connection -+ spec was supposed to fail. */ -+ SELF_CHECK (c.should_fail); -+ return; -+ } -+ END_CATCH -+ -+ SELF_CHECK (!c.should_fail); -+ SELF_CHECK (ret.host_str == c.expected_result.host_str); -+ SELF_CHECK (ret.port_str == c.expected_result.port_str); -+ SELF_CHECK (hint.ai_family == c.exp_ai_family); -+ SELF_CHECK (hint.ai_socktype == c.exp_ai_socktype); -+ SELF_CHECK (hint.ai_protocol == c.exp_ai_protocol); -+} -+ -+/* Run the tests associated with parsing connection specs. */ -+ -+static void -+run_tests () -+{ -+ for (const parse_conn_test &c : conn_test) -+ test_conn (c); -+} -+} /* namespace parse_connection_spec_tests */ -+} /* namespace selftests */ -+ -+void -+_initialize_parse_connection_spec_selftests () -+{ -+ selftests::register_test ("parse_connection_spec", -+ selftests::parse_connection_spec_tests::run_tests); -+} diff --git a/gdb-rhbz881849-ipv6-2of3.patch b/gdb-rhbz881849-ipv6-2of3.patch deleted file mode 100644 index 390be0f39e00a3180f02185696bb541869ea788f..0000000000000000000000000000000000000000 --- a/gdb-rhbz881849-ipv6-2of3.patch +++ /dev/null @@ -1,54 +0,0 @@ -From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 -From: Sergio Durigan Junior -Date: Mon, 30 Jul 2018 15:23:27 -0400 -Subject: gdb-rhbz881849-ipv6-2of3.patch - -Match any kind of error after "cannot resolve name" on lib/gdbserver-support.exp:gdbserver_start - -On commit: - -commit 7f1f7e23939adc7d71036a17fc6081e3af7ca585 -Author: Sergio Durigan Junior -Date: Fri Jul 13 16:20:34 2018 -0400 - - Expect for another variant of error message when gdbserver cannot resolve hostname - -I extended the regular expression being used to identify whether -gdbserver could not resolve a (host)name. This was needed because the -error message being printed had a different variation across some -systems. However, as it turns out, I've just noticed that the message -has yet another variation: - - target remote tcp8:123:2353 - tcp8:123:2353: cannot resolve name: System error - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - tcp8:123:2353: No such file or directory. - (gdb) FAIL: gdb.server/server-connect.exp: tcp8: connect to gdbserver using tcp8:123 - -which is causing FAILs on some systems (namely, Fedora-i686 on -BuildBot). - -So instead of trying to predict everything that can be printed, I -decided to just match anything after the "cannot resolve name: " part. -This patch implements that. - -Regression tested on the BuildBot. - -gdb/testsuite/ChangeLog: -2018-07-30 Sergio Durigan Junior - - * lib/gdbserver-support.exp (gdbserver_start): Match any kind of - error after "cannot resolve name" string. - -diff --git a/gdb/testsuite/lib/gdbserver-support.exp b/gdb/testsuite/lib/gdbserver-support.exp ---- a/gdb/testsuite/lib/gdbserver-support.exp -+++ b/gdb/testsuite/lib/gdbserver-support.exp -@@ -326,7 +326,7 @@ proc gdbserver_start { options arguments } { - continue - } - } -- -re ".*: cannot resolve name: Name or service not known\r\n" { -+ -re ".*: cannot resolve name: .*\r\n" { - error "gdbserver cannot resolve name." - } - timeout { diff --git a/gdb-vla-intel-fix-print-char-array.patch b/gdb-vla-intel-fix-print-char-array.patch index 944f82b72d3da70cd27df8cbd13921b5377cfae6..dcccc7b45ba25e949fb6335c93a6a1e8d73c37fd 100644 --- a/gdb-vla-intel-fix-print-char-array.patch +++ b/gdb-vla-intel-fix-print-char-array.patch @@ -1,10 +1,3 @@ -From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 -From: Sergio Durigan Junior -Date: Thu, 7 Dec 2017 16:20:31 -0500 -Subject: gdb-vla-intel-fix-print-char-array.patch - -;; Revert upstream commit 469412dd9ccc4de5874fd3299b105833f36b34cd - Revert commit (only the part touching gdb/f-valprint.c): commit 469412dd9ccc4de5874fd3299b105833f36b34cd @@ -47,15 +40,3 @@ diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c break; case TYPE_CODE_STRUCT: -diff --git a/gdb/testsuite/gdb.fortran/printing-types.exp b/gdb/testsuite/gdb.fortran/printing-types.exp ---- a/gdb/testsuite/gdb.fortran/printing-types.exp -+++ b/gdb/testsuite/gdb.fortran/printing-types.exp -@@ -29,7 +29,7 @@ if {![runto MAIN__]} then { - gdb_breakpoint [gdb_get_line_number "write"] - gdb_continue_to_breakpoint "write" - --gdb_test "print oneByte" " = 1" -+gdb_test "print oneByte" " = 1 \'\\\\001\'" - gdb_test "print twobytes" " = 2" - gdb_test "print chvalue" " = \'a\'" - gdb_test "print logvalue" " = \.TRUE\." diff --git a/gdb-vla-intel-fortran-strides.patch b/gdb-vla-intel-fortran-strides.patch index 7868efe758192fca651c6e87f93c6a3a8e1c5929..f5043086da9b8cdfe541d100e00188dacc56b62f 100644 --- a/gdb-vla-intel-fortran-strides.patch +++ b/gdb-vla-intel-fortran-strides.patch @@ -1,11 +1,3 @@ -From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 -From: Fedora GDB patches -Date: Fri, 27 Oct 2017 21:07:50 +0200 -Subject: gdb-vla-intel-fortran-strides.patch - -;; VLA (Fortran dynamic arrays) from Intel + archer-jankratochvil-vla tests. -;;=push - git diff --stat -p gdb/master...gdb/users/bheckel/fortran-strides dbfd7140bf4c0500d1f5d192be781f83f78f7922 @@ -22,13 +14,6 @@ dbfd7140bf4c0500d1f5d192be781f83f78f7922 gdb/parse.c | 24 +- gdb/rust-exp.y | 12 +- gdb/rust-lang.c | 17 +- - gdb/testsuite/gdb.fortran/static-arrays.exp | 421 ++++++++++++++++++++++++++++ - gdb/testsuite/gdb.fortran/static-arrays.f90 | 55 ++++ - gdb/testsuite/gdb.fortran/vla-ptype.exp | 4 + - gdb/testsuite/gdb.fortran/vla-sizeof.exp | 4 + - gdb/testsuite/gdb.fortran/vla-stride.exp | 44 +++ - gdb/testsuite/gdb.fortran/vla-stride.f90 | 29 ++ - gdb/testsuite/gdb.fortran/vla.f90 | 10 + gdb/valarith.c | 10 +- gdb/valops.c | 197 +++++++++++-- gdb/value.h | 2 + @@ -1149,615 +1134,6 @@ diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c high = high_bound; if (high < 0) error (_("High index less than zero")); -diff --git a/gdb/testsuite/gdb.fortran/static-arrays.exp b/gdb/testsuite/gdb.fortran/static-arrays.exp -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.fortran/static-arrays.exp -@@ -0,0 +1,421 @@ -+# Copyright 2015 Free Software Foundation, Inc. -+# -+# Contributed by Intel Corp. -+# -+# 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 static-arrays.f90 -+ -+if { [prepare_for_testing $testfile.exp $testfile $srcfile {debug f90}] } { -+ return -1 -+} -+ -+if ![runto MAIN__] then { -+ perror "couldn't run to breakpoint MAIN__" -+ continue -+} -+ -+gdb_breakpoint [gdb_get_line_number "BP1"] -+gdb_continue_to_breakpoint "BP1" ".*BP1.*" -+ -+# Tests subarrays of one dimensional arrays with subrange variations -+gdb_test "print ar1" "\\$\[0-9\]+ = \\(1, 2, 3, 4, 5, 6, 7, 8, 9\\)" \ -+ "print ar1." -+gdb_test "print ar1\(4:7\)" "\\$\[0-9\]+ = \\(4, 5, 6, 7\\)" \ -+ "print ar1\(4:7\)" -+gdb_test "print ar1\(8:\)" "\\$\[0-9\]+ = \\(8, 9\\).*" \ -+ "print ar1\(8:\)" -+gdb_test "print ar1\(:3\)" "\\$\[0-9\]+ = \\(1, 2, 3\\).*" \ -+ "print ar1\(:3\)" -+gdb_test "print ar1\(:\)" "\\$\[0-9\]+ = \\(1, 2, 3, 4, 5, 6, 7, 8, 9\\)" \ -+ "print ar1\(:\)" -+ -+# Check assignment -+gdb_test_no_output "set \$my_ary = ar1\(3:8\)" -+gdb_test "print \$my_ary" \ -+ "\\$\[0-9\]+ = \\(3, 4, 5, 6, 7, 8\\)" \ -+ "Assignment of subarray to variable" -+gdb_test_no_output "set ar1\(5\) = 42" -+ gdb_test "print ar1\(3:8\)" \ -+ "\\$\[0-9\]+ = \\(3, 4, 42, 6, 7, 8\\)" \ -+ "print ar1\(3:8\) after assignment" -+gdb_test "print \$my_ary" \ -+ "\\$\[0-9\]+ = \\(3, 4, 5, 6, 7, 8\\)" \ -+ "Assignment of subarray to variable after original array changed" -+ -+# Test for subarrays of one dimensional arrays with literals -+ gdb_test "print ar1\(3\)" "\\$\[0-9\]+ = 3" \ -+ "print ar1\(3\)" -+ -+# Tests for subranges of 2 dimensional arrays with subrange variations -+gdb_test "print ar2\(2:3, 3:4\)" \ -+ "\\$\[0-9\]+ = \\(\\( 23, 33\\) \\( 24, 34\\) \\)" \ -+ "print ar2\(2:3, 3:4\)." -+gdb_test "print ar2\(8:9,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( 88, 98\\) \\( 89, 99\\) \\)" \ -+ "print ar2\(8:9,8:\)" -+gdb_test "print ar2\(8:9,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( 81, 91\\) \\( 82, 92\\) \\)" \ -+ "print ar2\(8:9,:2\)" -+ -+gdb_test "print ar2\(8:,8:9\)" \ -+ "\\$\[0-9\]+ = \\(\\( 88, 98\\) \\( 89, 99\\) \\)" \ -+ "print ar2\(8:,8:9\)" -+gdb_test "print ar2\(8:,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( 88, 98\\) \\( 89, 99\\) \\)" \ -+ "print ar2\(8:,8:\)" -+gdb_test "print ar2\(8:,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( 81, 91\\) \\( 82, 92\\) \\)" \ -+ "print ar2\(8:,:2\)" -+ -+gdb_test "print ar2\(:2,2:3\)" \ -+ "\\$\[0-9\]+ = \\(\\( 12, 22\\) \\( 13, 23\\) \\)" \ -+ "print ar2\(:2,2:3\)" -+gdb_test "print ar2\(:2,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( 18, 28\\) \\( 19, 29\\) \\)" \ -+ "print ar2\(:2,8:\)" -+gdb_test "print ar2\(:2,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( 11, 21\\) \\( 12, 22\\) \\)" \ -+ "print ar2\(:2,:2\)" -+ -+# Test subranges of 2 dimensional arrays with literals and subrange variations -+gdb_test "print ar2\(7, 3:6\)" \ -+ "\\$\[0-9\]+ = \\(73, 74, 75, 76\\)" \ -+ "print ar2\(7, 3:6\)" -+gdb_test "print ar2\(7,8:\)" \ -+ "\\$\[0-9\]+ = \\(78, 79\\)" \ -+ "print ar2\(7,8:\)" -+gdb_test "print ar2\(7,:2\)" \ -+ "\\$\[0-9\]+ = \\(71, 72\\)" \ -+ "print ar2\(7,:2\)" -+ -+gdb_test "print ar2\(7:8,4\)" \ -+ "\\$\[0-9\]+ = \\(74, 84\\)" \ -+ "print ar2(7:8,4\)" -+gdb_test "print ar2\(8:,4\)" \ -+ "\\$\[0-9\]+ = \\(84, 94\\)" \ -+ "print ar2\(8:,4\)" -+gdb_test "print ar2\(:2,4\)" \ -+ "\\$\[0-9\]+ = \\(14, 24\\)" \ -+ "print ar2\(:2,4\)" -+gdb_test "print ar2\(3,4\)" \ -+ "\\$\[0-9\]+ = 34" \ -+ "print ar2\(3,4\)" -+ -+# Test subarrays of 3 dimensional arrays with literals and subrange variations -+gdb_test "print ar3\(2:4,3:4,7:8\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 237, 337, 437\\) \\( 247, 347, 447\\)\ -+ \\) \\( \\( 238, 338, 438\\) \\( 248, 348, 448\\) \\) \\)" \ -+ "print ar3\(2:4,3:4,7:8\)" -+gdb_test "print ar3\(2:3,4:5,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 248, 348\\) \\( 258, 358\\) \\) \\(\ -+ \\( 249, 349\\) \\( 259, 359\\) \\) \\)" \ -+ "print ar3\(2:3,4:5,8:\)" -+gdb_test "print ar3\(2:3,4:5,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 241, 341\\) \\( 251, 351\\) \\) \\(\ -+ \\( 242, 342\\) \\( 252, 352\\) \\) \\)" \ -+ "print ar3\(2:3,4:5,:2\)" -+ -+gdb_test "print ar3\(2:3,8:,7:8\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 287, 387\\) \\( 297, 397\\) \\) \\(\ -+ \\( 288, 388\\) \\( 298, 398\\) \\) \\)" \ -+ "print ar3\(2:3,8:,7:8\)" -+gdb_test "print ar3\(2:3,8:,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 288, 388\\) \\( 298, 398\\) \\) \\(\ -+ \\( 289, 389\\) \\( 299, 399\\) \\) \\)" \ -+ "print ar3\(2:3,8:,8:\)" -+gdb_test "print ar3\(2:3,8:,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 281, 381\\) \\( 291, 391\\) \\) \\(\ -+ \\( 282, 382\\) \\( 292, 392\\) \\) \\)" \ -+ "print ar3\(2:3,8:,:2\)" -+ -+gdb_test "print ar3\(2:3,:2,7:8\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 217, 317\\) \\( 227, 327\\) \\) \\(\ -+ \\( 218, 318\\) \\( 228, 328\\) \\) \\)" \ -+ "print ar3\(2:3,:2,7:8\)" -+gdb_test "print ar3\(2:3,:2,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 218, 318\\) \\( 228, 328\\) \\) \\(\ -+ \\( 219, 319\\) \\( 229, 329\\) \\) \\)" \ -+ "print ar3\(2:3,:2,8:\)" -+gdb_test "print ar3\(2:3,:2,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 211, 311\\) \\( 221, 321\\) \\) \\(\ -+ \\( 212, 312\\) \\( 222, 322\\) \\) \\)" \ -+ "print ar3\(2:3,:2,:2\)" -+ -+gdb_test "print ar3\(8:,3:4,7:8\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 837, 937\\) \\( 847, 947\\) \\) \\(\ -+ \\( 838, 938\\) \\( 848, 948\\) \\) \\)" \ -+ "print ar3\(8:,3:4,7:8\)" -+gdb_test "print ar3\(8:,4:5,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 848, 948\\) \\( 858, 958\\) \\) \\(\ -+ \\( 849, 949\\) \\( 859, 959\\) \\) \\)" \ -+ "print ar3\(8:,4:5,8:\)" -+gdb_test "print ar3\(8:,4:5,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 841, 941\\) \\( 851, 951\\) \\) \\(\ -+ \\( 842, 942\\) \\( 852, 952\\) \\) \\)" \ -+ "print ar3\(8:,4:5,:2\)" -+ -+gdb_test "print ar3\(8:,8:,7:8\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 887, 987\\) \\( 897, 997\\) \\) \\(\ -+ \\( 888, 988\\) \\( 898, 998\\) \\) \\)" \ -+ "print ar3\(8:,8:,7:8\)" -+gdb_test "print ar3\(8:,8:,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 888, 988\\) \\( 898, 998\\) \\) \\(\ -+ \\( 889, 989\\) \\( 899, 999\\) \\) \\)" \ -+ "print ar3\(8:,8:,8:\)" -+gdb_test "print ar3\(8:,8:,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 881, 981\\) \\( 891, 991\\) \\) \\(\ -+ \\( 882, 982\\) \\( 892, 992\\) \\) \\)" \ -+ "print ar3\(8:,8:,:2\)" -+ -+gdb_test "print ar3\(8:,:2,7:8\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 817, 917\\) \\( 827, 927\\) \\) \\(\ -+ \\( 818, 918\\) \\( 828, 928\\) \\) \\)" \ -+ "print ar3\(8:,:2,7:8\)" -+gdb_test "print ar3\(8:,:2,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 818, 918\\) \\( 828, 928\\) \\) \\(\ -+ \\( 819, 919\\) \\( 829, 929\\) \\) \\)" \ -+ "print ar3\(8:,:2,8:\)" -+gdb_test "print ar3\(8:,:2,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 811, 911\\) \\( 821, 921\\) \\) \\(\ -+ \\( 812, 912\\) \\( 822, 922\\) \\) \\)" \ -+ "print ar3\(8:,:2,:2\)" -+ -+ -+gdb_test "print ar3\(:2,3:4,7:8\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 137, 237\\) \\( 147, 247\\) \\) \\(\ -+ \\( 138, 238\\) \\( 148, 248\\) \\) \\)" \ -+ "print ar3 \(:2,3:4,7:8\)." -+gdb_test "print ar3\(:2,3:4,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 138, 238\\) \\( 148, 248\\) \\) \\(\ -+ \\( 139, 239\\) \\( 149, 249\\) \\) \\)" \ -+ "print ar3\(:2,3:4,8:\)" -+gdb_test "print ar3\(:2,3:4,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 131, 231\\) \\( 141, 241\\) \\) \\(\ -+ \\( 132, 232\\) \\( 142, 242\\) \\) \\)" \ -+ "print ar3\(:2,3:4,:2\)" -+ -+gdb_test "print ar3\(:2,8:,7:8\)" "\\$\[0-9\]+ = \\(\\( \\( 187, 287\\) \\(\ -+ 197, 297\\) \\) \\( \\( 188, 288\\) \\( 198, 298\\) \\) \\)" \ -+ "print ar3\(:2,8:,7:8\)" -+gdb_test "print ar3\(:2,8:,8:\)" "\\$\[0-9\]+ = \\(\\( \\( 188, 288\\) \\( 198,\ -+ 298\\) \\) \\( \\( 189, 289\\) \\( 199, 299\\) \\) \\)" \ -+ "print ar3\(:2,8:,8:\)" -+gdb_test "print ar3\(:2,8:,:2\)" "\\$\[0-9\]+ = \\(\\( \\( 181, 281\\) \\( 191,\ -+ 291\\) \\) \\( \\( 182, 282\\) \\( 192, 292\\) \\) \\)" \ -+ "print ar3\(:2,8:,:2\)" -+ -+gdb_test "print ar3\(:2,:2,7:8\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 117, 217\\) \\( 127, 227\\) \\) \\(\ -+ \\( 118, 218\\) \\( 128, 228\\) \\) \\)" \ -+ "print ar3\(:2,:2,7:8\)" -+gdb_test "print ar3\(:2,:2,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 118, 218\\) \\( 128, 228\\) \\) \\(\ -+ \\( 119, 219\\) \\( 129, 229\\) \\) \\)" \ -+ "print ar3\(:2,:2,8:\)" -+gdb_test "print ar3\(:2,:2,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 111, 211\\) \\( 121, 221\\) \\) \\(\ -+ \\( 112, 212\\) \\( 122, 222\\) \\) \\)" \ -+ "print ar3\(:2,:2,:2\)" -+ -+#Tests for subarrays of 3 dimensional arrays with literals and subranges -+gdb_test "print ar3\(3,3:4,7:8\)" \ -+ "\\$\[0-9\]+ = \\(\\( 337, 347\\) \\( 338, 348\\) \\)" \ -+ "print ar3\(3,3:4,7:8\)" -+gdb_test "print ar3\(3,4:5,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( 348, 358\\) \\( 349, 359\\) \\)" \ -+ "print ar3\(3,4:5,8:\)" -+gdb_test "print ar3\(3,4:5,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( 341, 351\\) \\( 342, 352\\) \\)" \ -+ "print ar3\(3,4:5,:2\)" -+gdb_test "print ar3\(3,4:5,3\)" \ -+ "\\$\[0-9\]+ = \\(343, 353\\)" \ -+ "print ar3\(3,4:5,3\)" -+ -+gdb_test "print ar3\(2,8:,7:8\)" \ -+ "\\$\[0-9\]+ = \\(\\( 287, 297\\) \\( 288, 298\\) \\)" \ -+ "print ar3\(2,8:,7:8\)" -+gdb_test "print ar3\(2,8:,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( 288, 298\\) \\( 289, 299\\) \\)" \ -+ "print ar3\(2,8:,8:\)" -+gdb_test "print ar3\(2,8:,:2\)"\ -+ "\\$\[0-9\]+ = \\(\\( 281, 291\\) \\( 282, 292\\) \\)" \ -+ "print ar3\(2,8:,:2\)" -+gdb_test "print ar3\(2,8:,3\)" \ -+ "\\$\[0-9\]+ = \\(283, 293\\)" \ -+ "print ar3\(2,8:,3\)" -+ -+gdb_test "print ar3\(2,:2,7:8\)" \ -+ "\\$\[0-9\]+ = \\(\\( 217, 227\\) \\( 218, 228\\) \\)" \ -+ "print ar3\(2,:2,7:8\)" -+gdb_test "print ar3\(2,:2,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( 218, 228\\) \\( 219, 229\\) \\)" \ -+ "print ar3\(2,:2,8:\)" -+gdb_test "print ar3\(2,:2,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( 211, 221\\) \\( 212, 222\\) \\)" \ -+ "print ar3\(2,:2,:2\)" -+gdb_test "print ar3\(2,:2,3\)" \ -+ "\\$\[0-9\]+ = \\(213, 223\\)" \ -+ "print ar3\(2,:2,3\)" -+ -+gdb_test "print ar3\(3,4,7:8\)" \ -+ "\\$\[0-9\]+ = \\(347, 348\\)" \ -+ "print ar3\(3,4,7:8\)" -+gdb_test "print ar3\(3,4,8:\)" \ -+ "\\$\[0-9\]+ = \\(348, 349\\)" \ -+i "print ar3\(3,4,8:\)" -+gdb_test "print ar3\(3,4,:2\)" \ -+ "\\$\[0-9\]+ = \\(341, 342\\)" \ -+ "print ar3\(3,4,:2\)" -+gdb_test "print ar3\(5,6,7\)" \ -+ "\\$\[0-9\]+ = 567" \ -+ "print ar3\(5,6,7\)" -+ -+gdb_test "print ar3\(3:4,6,7:8\)" \ -+ "\\$\[0-9\]+ = \\(\\( 367, 467\\) \\( 368, 468\\) \\)" \ -+ "print ar3\(3:4,6,7:8\)" -+gdb_test "print ar3\(3:4,6,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( 368, 468\\) \\( 369, 469\\) \\)" \ -+ "print ar3\(3:4,6,8:\)" -+gdb_test "print ar3\(3:4,6,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( 361, 461\\) \\( 362, 462\\) \\)" \ -+ "print ar3\(3:4,6,:2\)" -+gdb_test "print ar3\(3:4,6,5\)" \ -+ "\\$\[0-9\]+ = \\(365, 465\\)" \ -+ "print ar3\(3:4,6,5\)" -+ -+gdb_test "print ar3\(8:,6,7:8\)" \ -+ "\\$\[0-9\]+ = \\(\\( 867, 967\\) \\( 868, 968\\) \\)" \ -+ "print ar3\(8:,6,7:8\)" -+gdb_test "print ar3\(8:,6,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( 868, 968\\) \\( 869, 969\\) \\)" \ -+ "print ar3\(8:,6,8:\)" -+gdb_test "print ar3\(8:,6,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( 861, 961\\) \\( 862, 962\\) \\)" \ -+ "print ar3\(8:,6,:2\)" -+gdb_test "print ar3\(8:,6,5\)" \ -+ "\\$\[0-9\]+ = \\(865, 965\\)" \ -+ "print ar3\(8:,6,5\)" -+ -+gdb_test "print ar3\(:2,6,7:8\)" \ -+ "\\$\[0-9\]+ = \\(\\( 167, 267\\) \\( 168, 268\\) \\)" \ -+ "print ar3\(:2,6,7:8\)" -+gdb_test "print ar3\(:2,6,8:\)" \ -+ "\\$\[0-9\]+ = \\(\\( 168, 268\\) \\( 169, 269\\) \\)" \ -+ "print ar3\(:2,6,8:\)" -+gdb_test "print ar3\(:2,6,:2\)" \ -+ "\\$\[0-9\]+ = \\(\\( 161, 261\\) \\( 162, 262\\) \\)" \ -+ "print ar3\(:2,6,:2\)" -+gdb_test "print ar3\(:2,6,5\)" \ -+ "\\$\[0-9\]+ = \\(165, 265\\)" \ -+ "print ar3\(:2,6,5\)" -+ -+gdb_test "print ar3\(3:4,5:6,4\)" \ -+ "\\$\[0-9\]+ = \\(\\( 354, 454\\) \\( 364, 464\\) \\)" \ -+ "print ar2\(3:4,5:6,4\)" -+gdb_test "print ar3\(8:,5:6,4\)" \ -+ "\\$\[0-9\]+ = \\(\\( 854, 954\\) \\( 864, 964\\) \\)" \ -+ "print ar2\(8:,5:6,4\)" -+gdb_test "print ar3\(:2,5:6,4\)" \ -+ "\\$\[0-9\]+ = \\(\\( 154, 254\\) \\( 164, 264\\) \\)" \ -+ "print ar2\(:2,5:6,4\)" -+ -+# Stride > 1 -+gdb_test "print ar1\(2:6:2\)" \ -+ "\\$\[0-9\]+ = \\(2, 4, 6\\)" \ -+ "print ar1\(2:6:2\)" -+gdb_test "print ar2\(2:6:2,3:4\)" \ -+ "\\$\[0-9\]+ = \\(\\( 23, 43, 63\\) \\( 24, 44, 64\\) \\)" \ -+ "print ar2\(2:6:2,3:4\)" -+gdb_test "print ar2\(2:6:2,3\)" \ -+ "\\$\[0-9\]+ = \\(23, 43, 63\\)" \ -+ "print ar2\(2:6:2,3\)" -+gdb_test "print ar3\(2:6:2,3:5:2,4:7:3\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 234, 434, 634\\) \\( 254, 454, 654\\)\ -+ \\) \\( \\( 237, 437, 637\\) \\( 257, 457, 657\\) \\) \\)" \ -+ "print ar3\(2:6:2,3:5:2,4:7:3\)" -+gdb_test "print ar3\(2:6:2,5,4:7:3\)" \ -+ "\\$\[0-9\]+ = \\(\\( 254, 454, 654\\) \\( 257, 457, 657\\)\ -+ \\)" \ -+ "print ar3\(2:6:2,5,4:7:3\)" -+ -+# Stride < 0 -+gdb_test "print ar1\(8:2:-2\)" \ -+ "\\$\[0-9\]+ = \\(8, 6, 4, 2\\)" \ -+ "print ar1\(8:2:-2\)" -+gdb_test "print ar2\(8:2:-2,3:4\)" \ -+ "\\$\[0-9\]+ = \\(\\( 83, 63, 43, 23\\) \\( 84, 64, 44, 24\\)\ -+ \\)" \ -+ "print ar2\(8:2:-2,3:4\)" -+gdb_test "print ar2\(2:6:2,3\)" \ -+ "\\$\[0-9\]+ = \\(23, 43, 63\\)" \ -+ "print ar2\(2:6:2,3\)" -+gdb_test "print ar3\(2:3,7:3:-4,4:7:3\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 274, 374\\) \\( 234, 334\\) \\) \\(\ -+ \\( 277, 377\\) \\( 237, 337\\) \\) \\)" \ -+ "print ar3\(2:3,7:3:-4,4:7:3\)" -+gdb_test "print ar3\(2:6:2,5,7:4:-3\)" \ -+ "\\$\[0-9\]+ = \\(\\( 257, 457, 657\\) \\( 254, 454, 654\\)\ -+ \\)" \ -+ "print ar3\(2:6:2,5,7:4:-3\)" -+ -+# Tests with negative and mixed indices -+gdb_test "p ar4\(2:4, -2:1, -15:-14\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 261, 361, 461\\) \\( 271, 371, 471\\)\ -+ \\( 281, 381, 481\\) \\( 291, 391, 491\\) \\) \\( \\( 262,\ -+ 362, 462\\) \\( 272, 372, 472\\) \\( 282, 382, 482\\) \\( 292,\ -+ 392, 492\\) \\) \\)" \ -+ "print ar4(2:4, -2:1, -15:-14)" -+ -+gdb_test "p ar4\(7,-6:2:3,-7\)" \ -+ "\\$\[0-9\]+ = \\(729, 759, 789\\)" \ -+ "print ar4(7,-6:2:3,-7)" -+ -+gdb_test "p ar4\(9:2:-2, -6:2:3, -6:-15:-3\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 930, 730, 530, 330\\) \\( 960, 760,\ -+ 560, 360\\) \\( 990, 790, 590, 390\\) \\) \\( \\( 927, 727,\ -+ 527, 327\\) \\( 957, 757, 557, 357\\) \\( 987, 787, 587,\ -+ 387\\) \\) \\( \\( 924, 724, 524, 324\\) \\( 954, 754, 554,\ -+ 354\\) \\( 984, 784, 584, 384\\) \\) \\( \\( 921, 721, 521,\ -+ 321\\) \\( 951, 751, 551, 351\\) \\( 981, 781, 581, 381\\) \\)\ -+ \\)" \ -+ "print ar4(9:2:-2, -6:2:3, -6:-15:-3)" -+ -+gdb_test "p ar4\(:,:,:\)" \ -+ "\\$\[0-9\]+ = \\(\\( \\( 111, 211, 311, 411, 511, 611, 711,\ -+ 811, .*" \ -+ "print ar4(:,:,:)" -+ -+# Provoke error messages for bad user input -+gdb_test "print ar1\(0:4\)" \ -+ "provided bound\\(s\\) outside array bound\\(s\\)" \ -+ "print ar1\(0:4\)" -+gdb_test "print ar1\(8:12\)" \ -+ "provided bound\\(s\\) outside array bound\\(s\\)" \ -+ "print ar1\(8:12\)" -+gdb_test "print ar1\(8:2:\)" \ -+ "A syntax error in expression, near `\\)'." \ -+ "print ar1\(8:2:\)" -+gdb_test "print ar1\(8:2:2\)" \ -+ "Wrong value provided for stride and boundaries" \ -+ "print ar1\(8:2:2\)" -+gdb_test "print ar1\(2:8:-2\)" \ -+ "Wrong value provided for stride and boundaries" \ -+ "print ar1\(2:8:-2\)" -+gdb_test "print ar1\(2:7:0\)" \ -+ "Stride must not be 0" \ -+ "print ar1\(2:7:0\)" -+gdb_test "print ar1\(3:7\) = 42" \ -+ "Invalid cast." \ -+ "Assignment of value to subarray" -diff --git a/gdb/testsuite/gdb.fortran/static-arrays.f90 b/gdb/testsuite/gdb.fortran/static-arrays.f90 -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.fortran/static-arrays.f90 -@@ -0,0 +1,55 @@ -+! Copyright 2015 Free Software Foundation, Inc. -+! -+! Contributed by Intel Corp. -+! -+! 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 . -+ -+subroutine sub -+ integer, dimension(9) :: ar1 -+ integer, dimension(9,9) :: ar2 -+ integer, dimension(9,9,9) :: ar3 -+ integer, dimension(10,-7:3, -15:-5) :: ar4 -+ integer :: i,j,k -+ -+ ar1 = 1 -+ ar2 = 1 -+ ar3 = 1 -+ ar4 = 4 -+ -+ ! Resulting array ar3 looks like ((( 111, 112, 113, 114,...))) -+ do i = 1, 9, 1 -+ ar1(i) = i -+ do j = 1, 9, 1 -+ ar2(i,j) = i*10 + j -+ do k = 1, 9, 1 -+ ar3(i,j,k) = i*100 + j*10 + k -+ end do -+ end do -+ end do -+ -+ do i = 1, 10, 1 -+ do j = -7, 3, 1 -+ do k = -15, -5, 1 -+ ar4(i,j,k) = i*100 + (j+8)*10 + (k+16) -+ end do -+ end do -+ end do -+ -+ ar1(1) = 11 !BP1 -+ return -+end -+ -+program testprog -+ call sub -+end -diff --git a/gdb/testsuite/gdb.fortran/vla-ptype.exp b/gdb/testsuite/gdb.fortran/vla-ptype.exp ---- a/gdb/testsuite/gdb.fortran/vla-ptype.exp -+++ b/gdb/testsuite/gdb.fortran/vla-ptype.exp -@@ -98,3 +98,7 @@ gdb_test "ptype vla2" "type = " "ptype vla2 not allocated" - gdb_test "ptype vla2(5, 45, 20)" \ - "no such vector element \\\(vector not allocated\\\)" \ - "ptype vla2(5, 45, 20) not allocated" -+ -+gdb_breakpoint [gdb_get_line_number "vla1-neg-bounds"] -+gdb_continue_to_breakpoint "vla1-neg-bounds" -+gdb_test "ptype vla1" "type = $real \\(-2:1,-5:4,-3:-1\\)" "ptype vla1 negative bounds" -diff --git a/gdb/testsuite/gdb.fortran/vla-sizeof.exp b/gdb/testsuite/gdb.fortran/vla-sizeof.exp ---- a/gdb/testsuite/gdb.fortran/vla-sizeof.exp -+++ b/gdb/testsuite/gdb.fortran/vla-sizeof.exp -@@ -44,3 +44,7 @@ gdb_test "print sizeof(pvla)" " = 0" "print sizeof non-associated pvla" - gdb_breakpoint [gdb_get_line_number "pvla-associated"] - gdb_continue_to_breakpoint "pvla-associated" - gdb_test "print sizeof(pvla)" " = 4000" "print sizeof associated pvla" -+ -+gdb_breakpoint [gdb_get_line_number "vla1-neg-bounds"] -+gdb_continue_to_breakpoint "vla1-neg-bounds" -+gdb_test "print sizeof(vla1)" " = 480" "print sizeof vla1 negative bounds" -diff --git a/gdb/testsuite/gdb.fortran/vla-stride.exp b/gdb/testsuite/gdb.fortran/vla-stride.exp -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.fortran/vla-stride.exp -@@ -0,0 +1,44 @@ -+# Copyright 2016 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 ".f90" -+ -+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \ -+ {debug f90 quiet}] } { -+ return -1 -+} -+ -+if ![runto MAIN__] then { -+ perror "couldn't run to breakpoint MAIN__" -+ continue -+} -+ -+gdb_breakpoint [gdb_get_line_number "re-reverse-elements"] -+gdb_continue_to_breakpoint "re-reverse-elements" -+gdb_test "print pvla" " = \\\(1, 2, 3, 4, 5, 6, 7, 8, 9, 10\\\)" \ -+ "print re-reverse-elements" -+gdb_test "print pvla(1)" " = 1" "print first re-reverse-element" -+gdb_test "print pvla(10)" " = 10" "print last re-reverse-element" -+ -+gdb_breakpoint [gdb_get_line_number "odd-elements"] -+gdb_continue_to_breakpoint "odd-elements" -+gdb_test "print pvla" " = \\\(1, 3, 5, 7, 9\\\)" "print odd-elements" -+gdb_test "print pvla(1)" " = 1" "print first odd-element" -+gdb_test "print pvla(5)" " = 9" "print last odd-element" -+ -+gdb_breakpoint [gdb_get_line_number "single-element"] -+gdb_continue_to_breakpoint "single-element" -+gdb_test "print pvla" " = \\\(5\\\)" "print single-element" -+gdb_test "print pvla(1)" " = 5" "print one single-element" -diff --git a/gdb/testsuite/gdb.fortran/vla-stride.f90 b/gdb/testsuite/gdb.fortran/vla-stride.f90 -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.fortran/vla-stride.f90 -@@ -0,0 +1,29 @@ -+! Copyright 2016 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 . -+ -+program vla_stride -+ integer, target, allocatable :: vla (:) -+ integer, pointer :: pvla (:) -+ -+ allocate(vla(10)) -+ vla = (/ (I, I = 1,10) /) -+ -+ pvla => vla(10:1:-1) -+ pvla => pvla(10:1:-1) -+ pvla => vla(1:10:2) ! re-reverse-elements -+ pvla => vla(5:4:-2) ! odd-elements -+ -+ pvla => null() ! single-element -+end program vla_stride -diff --git a/gdb/testsuite/gdb.fortran/vla.f90 b/gdb/testsuite/gdb.fortran/vla.f90 ---- a/gdb/testsuite/gdb.fortran/vla.f90 -+++ b/gdb/testsuite/gdb.fortran/vla.f90 -@@ -54,4 +54,14 @@ program vla - - allocate (vla3 (2,2)) ! vla2-deallocated - vla3(:,:) = 13 -+ -+ allocate (vla1 (-2:1, -5:4, -3:-1)) -+ l = allocated(vla1) -+ -+ vla1(:, :, :) = 1 -+ vla1(-2, -3, -1) = -231 -+ -+ deallocate (vla1) ! vla1-neg-bounds -+ l = allocated(vla1) -+ - end program vla diff --git a/gdb/valarith.c b/gdb/valarith.c --- a/gdb/valarith.c +++ b/gdb/valarith.c diff --git a/gdb-vla-intel-fortran-vla-strings.patch b/gdb-vla-intel-fortran-vla-strings.patch index 49ab71c94f55fb367611a41e9c22bb838daaf8e3..4a19f3c4be31918ad3a233046213f26b42f5cb0d 100644 --- a/gdb-vla-intel-fortran-vla-strings.patch +++ b/gdb-vla-intel-fortran-vla-strings.patch @@ -1,10 +1,3 @@ -From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 -From: Fedora GDB patches -Date: Fri, 27 Oct 2017 21:07:50 +0200 -Subject: gdb-vla-intel-fortran-vla-strings.patch - -;;=push - git diff --stat -p gdb/master...gdb/users/bheckel/fortran-vla-strings 0ad7d8d1a3a36c6e04e3b6d37d8825f18d595723 @@ -13,22 +6,10 @@ git diff --stat -p gdb/master...gdb/users/bheckel/fortran-vla-strings gdb/dwarf2read.c | 158 +++++++++++++++++++++++++----- gdb/f-typeprint.c | 93 +++++++++--------- gdb/gdbtypes.c | 44 ++++++++- - gdb/testsuite/gdb.cp/vla-cxx.cc | 9 ++ - gdb/testsuite/gdb.cp/vla-cxx.exp | 9 ++ - gdb/testsuite/gdb.fortran/pointers.exp | 143 +++++++++++++++++++++++++++ - gdb/testsuite/gdb.fortran/pointers.f90 | 109 +++++++++++++++++++++ - gdb/testsuite/gdb.fortran/print_type.exp | 100 +++++++++++++++++++ - gdb/testsuite/gdb.fortran/vla-ptype.exp | 12 +-- - gdb/testsuite/gdb.fortran/vla-strings.exp | 103 +++++++++++++++++++ - gdb/testsuite/gdb.fortran/vla-strings.f90 | 39 ++++++++ - gdb/testsuite/gdb.fortran/vla-type.exp | 7 +- - gdb/testsuite/gdb.fortran/vla-value.exp | 12 ++- - gdb/testsuite/gdb.mi/mi-var-child-f.exp | 7 +- - gdb/testsuite/gdb.mi/mi-vla-fortran.exp | 27 ++--- gdb/typeprint.c | 19 ++++ gdb/valops.c | 16 ++- gdb/valprint.c | 6 -- - 20 files changed, 827 insertions(+), 110 deletions(-) + 8 files changed, 827 insertions(+), 110 deletions(-) diff --git a/gdb/NEWS b/gdb/NEWS --- a/gdb/NEWS @@ -587,693 +568,6 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c resolved_type = resolve_dynamic_array (type, addr_stack); break; -diff --git a/gdb/testsuite/gdb.cp/vla-cxx.cc b/gdb/testsuite/gdb.cp/vla-cxx.cc ---- a/gdb/testsuite/gdb.cp/vla-cxx.cc -+++ b/gdb/testsuite/gdb.cp/vla-cxx.cc -@@ -15,6 +15,10 @@ - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -+extern "C" { -+#include -+} -+ - struct container; - - struct element -@@ -40,11 +44,16 @@ int main(int argc, char **argv) - typedef typeof (vla) &vlareftypedef; - vlareftypedef vlaref2 (vla); - container c; -+ typeof (vla) *ptr = NULL; -+ -+ // Before pointer assignment -+ ptr = &vla; - - for (int i = 0; i < z; ++i) - vla[i] = 5 + 2 * i; - - // vlas_filled - vla[0] = 2 * vla[0]; -+ - return vla[2]; - } -diff --git a/gdb/testsuite/gdb.cp/vla-cxx.exp b/gdb/testsuite/gdb.cp/vla-cxx.exp ---- a/gdb/testsuite/gdb.cp/vla-cxx.exp -+++ b/gdb/testsuite/gdb.cp/vla-cxx.exp -@@ -23,6 +23,12 @@ if ![runto_main] { - return -1 - } - -+gdb_breakpoint [gdb_get_line_number "Before pointer assignment"] -+gdb_continue_to_breakpoint "Before pointer assignment" -+gdb_test "ptype ptr" "int \\(\\*\\)\\\[variable length\\\]" "ptype ptr, Before pointer assignment" -+gdb_test "print ptr" "\\(int \\(\\*\\)\\\[variable length\\\]\\) 0x0" "print ptr, Before pointer assignment" -+gdb_test "print *ptr" "Cannot access memory at address 0x0" "print *ptr, Before pointer assignment" -+ - gdb_breakpoint [gdb_get_line_number "vlas_filled"] - gdb_continue_to_breakpoint "vlas_filled" - -@@ -33,3 +39,6 @@ gdb_test "print vlaref" " = \\(int \\(&\\)\\\[3\\\]\\) @$hex: \\{5, 7, 9\\}" - # bug being tested, it's better not to depend on the exact spelling. - gdb_test "print vlaref2" " = \\(.*\\) @$hex: \\{5, 7, 9\\}" - gdb_test "print c" " = \\{e = \\{c = @$hex\\}\\}" -+gdb_test "ptype ptr" "int \\(\\*\\)\\\[3\\\]" -+gdb_test "print ptr" "\\(int \\(\\*\\)\\\[3\\\]\\) $hex" -+gdb_test "print *ptr" " = \\{5, 7, 9\\}" -diff --git a/gdb/testsuite/gdb.fortran/pointers.exp b/gdb/testsuite/gdb.fortran/pointers.exp -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.fortran/pointers.exp -@@ -0,0 +1,143 @@ -+# Copyright 2016 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 "pointers.f90" -+load_lib fortran.exp -+ -+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \ -+ {debug f90 quiet}] } { -+ return -1 -+} -+ -+if ![runto_main] { -+ untested "could not run to main" -+ return -1 -+} -+ -+# Depending on the compiler being used, the type names can be printed differently. -+set logical [fortran_logical4] -+set real [fortran_real4] -+set int [fortran_int4] -+set complex [fortran_complex4] -+ -+ -+gdb_breakpoint [gdb_get_line_number "Before pointer assignment"] -+gdb_continue_to_breakpoint "Before pointer assignment" -+gdb_test "print logp" "= \\(PTR TO -> \\( $logical \\)\\) 0x0" "print logp, not associated" -+gdb_test "print *logp" "Cannot access memory at address 0x0" "print *logp, not associated" -+gdb_test "print comp" "= \\(PTR TO -> \\( $complex \\)\\) 0x0" "print comp, not associated" -+gdb_test "print *comp" "Cannot access memory at address 0x0" "print *comp, not associated" -+gdb_test "print charp" "= \\(PTR TO -> \\( character\\*1 \\)\\) 0x0" "print charp, not associated" -+gdb_test "print *charp" "Cannot access memory at address 0x0" "print *charp, not associated" -+gdb_test "print charap" "= \\(PTR TO -> \\( character\\*3 \\)\\) 0x0" "print charap, not associated" -+gdb_test "print *charap" "Cannot access memory at address 0x0" "print *charap, not associated" -+gdb_test "print intp" "= \\(PTR TO -> \\( $int \\)\\) 0x0" "print intp, not associated" -+gdb_test "print *intp" "Cannot access memory at address 0x0" "print *intp, not associated" -+set test "print intap, not associated" -+gdb_test_multiple "print intap" $test { -+ -re " = \\(PTR TO -> \\( $int \\(:,:\\)\\)\\) \r\n$gdb_prompt $" { -+ pass $test -+ } -+ -re " = \r\n$gdb_prompt $" { -+ pass $test -+ } -+} -+gdb_test "print realp" "= \\(PTR TO -> \\( $real \\)\\) 0x0" "print realp, not associated" -+gdb_test "print *realp" "Cannot access memory at address 0x0" "print *realp, not associated" -+gdb_test "print \$my_var = intp" "= \\(PTR TO -> \\( $int \\)\\) 0x0" -+set test "print cyclicp1, not associated" -+gdb_test_multiple "print cyclicp1" $test { -+ -re "= \\( i = -?\\d+, p = 0x0 \\)\r\n$gdb_prompt $" { -+ pass $test -+ } -+ -re "= \\( i = -?\\d+, p = \\)\r\n$gdb_prompt $" { -+ pass $test -+ } -+} -+set test "print cyclicp1%p, not associated" -+gdb_test_multiple "print cyclicp1%p" $test { -+ -re "= \\(PTR TO -> \\( Type typewithpointer \\)\\) 0x0\r\n$gdb_prompt $" { -+ pass $test -+ } -+ -re "= \\(PTR TO -> \\( Type typewithpointer \\)\\) \r\n$gdb_prompt $" { -+ pass $test -+ } -+} -+ -+ -+gdb_breakpoint [gdb_get_line_number "Before value assignment"] -+gdb_continue_to_breakpoint "Before value assignment" -+gdb_test "print *(twop)%ivla2" "= " -+ -+ -+gdb_breakpoint [gdb_get_line_number "After value assignment"] -+gdb_continue_to_breakpoint "After value assignment" -+gdb_test "print logp" "= \\(PTR TO -> \\( $logical \\)\\) $hex\( <.*>\)?" -+gdb_test "print *logp" "= \\.TRUE\\." -+gdb_test "print comp" "= \\(PTR TO -> \\( $complex \\)\\) $hex\( <.*>\)?" -+gdb_test "print *comp" "= \\(1,2\\)" -+gdb_test "print charp" "= \\(PTR TO -> \\( character\\*1 \\)\\) $hex\( <.*>\)?" -+gdb_test "print *charp" "= 'a'" -+gdb_test "print charap" "= \\(PTR TO -> \\( character\\*3 \\)\\) $hex\( <.*>\)?" -+gdb_test "print *charap" "= 'abc'" -+gdb_test "print intp" "= \\(PTR TO -> \\( $int \\)\\) $hex\( <.*>\)?" -+gdb_test "print *intp" "= 10" -+set test_name "print intap, associated" -+gdb_test_multiple "print intap" $test_name { -+ -re "= \\(\\( 1, 1, 3(, 1){7}\\) \\( 1(, 1){9}\\) \\)\r\n$gdb_prompt $" { -+ pass $test_name -+ } -+ -re "= \\(PTR TO -> \\( $int \\(10,2\\)\\)\\) $hex\( <.*>\)?\r\n$gdb_prompt $" { -+ gdb_test "print *intap" "= \\(\\( 1, 1, 3(, 1){7}\\) \\( 1(, 1){9}\\) \\)" -+ pass $test_name -+ } -+} -+set test_name "print intvlap, associated" -+gdb_test_multiple "print intvlap" $test_name { -+ -re "= \\(2, 2, 2, 4(, 2){6}\\)\r\n$gdb_prompt $" { -+ pass $test_name -+ } -+ -re "= \\(PTR TO -> \\( $int \\(10\\)\\)\\) $hex\( <.*>\)?\r\n$gdb_prompt $" { -+ gdb_test "print *intvlap" "= \\(2, 2, 2, 4(, 2){6}\\)" -+ pass $test_name -+ } -+} -+gdb_test "print realp" "= \\(PTR TO -> \\( $real \\)\\) $hex\( <.*>\)?" -+gdb_test "print *realp" "= 3\\.14000\\d+" -+gdb_test "print arrayOfPtr(2)%p" "= \\(PTR TO -> \\( Type two \\)\\) $hex\( <.*>\)?" -+gdb_test "print *(arrayOfPtr(2)%p)" "= \\( ivla1 = \\(11, 12, 13\\), ivla2 = \\(\\( 211, 221\\) \\( 212, 222\\) \\) \\)" -+set test_name "print arrayOfPtr(3)%p" -+gdb_test_multiple $test_name $test_name { -+ -re "= \\(PTR TO -> \\( Type two \\)\\) \r\n$gdb_prompt $" { -+ pass $test_name -+ } -+ -re "= \\(PTR TO -> \\( Type two \\)\\) 0x0\r\n$gdb_prompt $" { -+ pass $test_name -+ } -+} -+set test_name "print *(arrayOfPtr(3)%p), associated" -+gdb_test_multiple "print *(arrayOfPtr(3)%p)" $test_name { -+ -re "Cannot access memory at address 0x0\r\n$gdb_prompt $" { -+ pass $test_name -+ } -+ -re "Attempt to take contents of a not associated pointer.\r\n$gdb_prompt $" { -+ pass $test_name -+ } -+} -+gdb_test "print cyclicp1" "= \\( i = 1, p = $hex\( <.*>\)? \\)" -+gdb_test "print cyclicp1%p" "= \\(PTR TO -> \\( Type typewithpointer \\)\\) $hex\( <.*>\)?" -+gdb_test "print *((integer*) &inta + 2)" "= 3" "print temporary pointer, array" -+gdb_test "print *((integer*) &intvla + 3)" "= 4" "print temporary pointer, allocated vla" -+gdb_test "print \$pc" "= \\(PTR TO -> \\( void \\(\\)\\(\\)\\)\\) $hex " "Print program counter" -diff --git a/gdb/testsuite/gdb.fortran/pointers.f90 b/gdb/testsuite/gdb.fortran/pointers.f90 -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.fortran/pointers.f90 -@@ -0,0 +1,109 @@ -+! Copyright 2016 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 . -+ -+program pointers -+ -+ type :: two -+ integer, allocatable :: ivla1 (:) -+ integer, allocatable :: ivla2 (:, :) -+ end type two -+ -+ type :: typeWithPointer -+ integer i -+ type(typeWithPointer), pointer:: p -+ end type typeWithPointer -+ -+ type :: twoPtr -+ type (two), pointer :: p -+ end type twoPtr -+ -+ logical, target :: logv -+ complex, target :: comv -+ character, target :: charv -+ character (len=3), target :: chara -+ integer, target :: intv -+ integer, target, dimension (10,2) :: inta -+ integer, target, allocatable, dimension (:) :: intvla -+ real, target :: realv -+ type(two), target :: twov -+ type(twoPtr) :: arrayOfPtr (3) -+ type(typeWithPointer), target:: cyclicp1,cyclicp2 -+ -+ logical, pointer :: logp -+ complex, pointer :: comp -+ character, pointer:: charp -+ character (len=3), pointer:: charap -+ integer, pointer :: intp -+ integer, pointer, dimension (:,:) :: intap -+ integer, pointer, dimension (:) :: intvlap -+ real, pointer :: realp -+ type(two), pointer :: twop -+ -+ nullify (logp) -+ nullify (comp) -+ nullify (charp) -+ nullify (charap) -+ nullify (intp) -+ nullify (intap) -+ nullify (intvlap) -+ nullify (realp) -+ nullify (twop) -+ nullify (arrayOfPtr(1)%p) -+ nullify (arrayOfPtr(2)%p) -+ nullify (arrayOfPtr(3)%p) -+ nullify (cyclicp1%p) -+ nullify (cyclicp2%p) -+ -+ logp => logv ! Before pointer assignment -+ comp => comv -+ charp => charv -+ charap => chara -+ intp => intv -+ intap => inta -+ intvlap => intvla -+ realp => realv -+ twop => twov -+ arrayOfPtr(2)%p => twov -+ cyclicp1%i = 1 -+ cyclicp1%p => cyclicp2 -+ cyclicp2%i = 2 -+ cyclicp2%p => cyclicp1 -+ -+ logv = associated(logp) ! Before value assignment -+ comv = cmplx(1,2) -+ charv = "a" -+ chara = "abc" -+ intv = 10 -+ inta(:,:) = 1 -+ inta(3,1) = 3 -+ allocate (intvla(10)) -+ intvla(:) = 2 -+ intvla(4) = 4 -+ intvlap => intvla -+ realv = 3.14 -+ -+ allocate (twov%ivla1(3)) -+ allocate (twov%ivla2(2,2)) -+ twov%ivla1(1) = 11 -+ twov%ivla1(2) = 12 -+ twov%ivla1(3) = 13 -+ twov%ivla2(1,1) = 211 -+ twov%ivla2(2,1) = 221 -+ twov%ivla2(1,2) = 212 -+ twov%ivla2(2,2) = 222 -+ -+ intv = intv + 1 ! After value assignment -+ -+end program pointers -diff --git a/gdb/testsuite/gdb.fortran/print_type.exp b/gdb/testsuite/gdb.fortran/print_type.exp -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.fortran/print_type.exp -@@ -0,0 +1,100 @@ -+# Copyright 2016 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 "pointers.f90" -+load_lib fortran.exp -+ -+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \ -+ {debug f90 quiet}] } { -+ return -1 -+} -+ -+ -+if ![runto_main] { -+ untested "could not run to main" -+ return -1 -+} -+ -+# Depending on the compiler being used, the type names can be printed differently. -+set logical [fortran_logical4] -+set real [fortran_real4] -+set int [fortran_int4] -+set complex [fortran_complex4] -+ -+gdb_breakpoint [gdb_get_line_number "Before pointer assignment"] -+gdb_continue_to_breakpoint "Before pointer assignment" -+gdb_test "ptype logp" "type = PTR TO -> \\( $logical \\)" "ptype logp, not associated" -+gdb_test "ptype comp" "type = PTR TO -> \\( $complex \\)" "ptype comp, not associated" -+gdb_test "ptype charp" "type = PTR TO -> \\( character\\*1 \\)" "ptype charp, not associated" -+gdb_test "ptype charap" "type = PTR TO -> \\( character\\*3 \\)" "ptype charap, not associated" -+gdb_test "ptype intp" "type = PTR TO -> \\( $int \\)" "ptype intp, not associated" -+set test "ptype intap, not associated" -+gdb_test_multiple "ptype intap" $test { -+ -re "type = PTR TO -> \\( $int \\(:,:\\)\\)\r\n$gdb_prompt $" { -+ pass $test -+ } -+ -re "type = $int \\(:,:\\)\r\n$gdb_prompt $" { -+ pass $test -+ } -+} -+gdb_test "ptype realp" "type = PTR TO -> \\( $real \\)" "ptype realp, not associated" -+gdb_test "ptype twop" \ -+ [multi_line "type = PTR TO -> \\( Type two" \ -+ " $int :: ivla1\\(:\\)" \ -+ " $int :: ivla2\\(:,:\\)" \ -+ "End Type two \\)"] \ -+ "ptype twop, not associated" -+gdb_test "ptype two" \ -+ [multi_line "type = Type two" \ -+ " $int :: ivla1\\(:\\)" \ -+ " $int :: ivla2\\(:,:\\)" \ -+ "End Type two"] -+ -+ -+gdb_breakpoint [gdb_get_line_number "Before value assignment"] -+gdb_continue_to_breakpoint "Before value assignment" -+gdb_test "ptype twop" \ -+ [multi_line "type = PTR TO -> \\( Type two" \ -+ " $int :: ivla1\\(:\\)" \ -+ " $int :: ivla2\\(:,:\\)" \ -+ "End Type two \\)"] -+ -+ -+gdb_breakpoint [gdb_get_line_number "After value assignment"] -+gdb_continue_to_breakpoint "After value assignment" -+gdb_test "ptype logv" "type = $logical" -+gdb_test "ptype comv" "type = $complex" -+gdb_test "ptype charv" "type = character\\*1" -+gdb_test "ptype chara" "type = character\\*3" -+gdb_test "ptype intv" "type = $int" -+gdb_test "ptype inta" "type = $int \\(10,2\\)" -+gdb_test "ptype realv" "type = $real" -+ -+ -+gdb_test "ptype logp" "type = PTR TO -> \\( $logical \\)" -+gdb_test "ptype comp" "type = PTR TO -> \\( $complex \\)" -+gdb_test "ptype charp" "type = PTR TO -> \\( character\\*1 \\)" -+gdb_test "ptype charap" "type = PTR TO -> \\( character\\*3 \\)" -+gdb_test "ptype intp" "type = PTR TO -> \\( $int \\)" -+set test "ptype intap" -+gdb_test_multiple $test $test { -+ -re "type = $int \\(10,2\\)\r\n$gdb_prompt $" { -+ pass $test -+ } -+ -re "type = PTR TO -> \\( $int \\(10,2\\)\\)\r\n$gdb_prompt $" { -+ pass $test -+ } -+} -+gdb_test "ptype realp" "type = PTR TO -> \\( $real \\)" -diff --git a/gdb/testsuite/gdb.fortran/vla-ptype.exp b/gdb/testsuite/gdb.fortran/vla-ptype.exp ---- a/gdb/testsuite/gdb.fortran/vla-ptype.exp -+++ b/gdb/testsuite/gdb.fortran/vla-ptype.exp -@@ -32,9 +32,9 @@ set real [fortran_real4] - # Check the ptype of various VLA states and pointer to VLA's. - gdb_breakpoint [gdb_get_line_number "vla1-init"] - gdb_continue_to_breakpoint "vla1-init" --gdb_test "ptype vla1" "type = " "ptype vla1 not initialized" --gdb_test "ptype vla2" "type = " "ptype vla2 not initialized" --gdb_test "ptype pvla" "type = " "ptype pvla not initialized" -+gdb_test "ptype vla1" "type = $real \\(:,:,:\\)" "ptype vla1 not initialized" -+gdb_test "ptype vla2" "type = $real \\(:,:,:\\)" "ptype vla2 not initialized" -+gdb_test "ptype pvla" "type = $real \\(:,:,:\\)" "ptype pvla not initialized" - gdb_test "ptype vla1(3, 6, 9)" "no such vector element \\\(vector not allocated\\\)" \ - "ptype vla1(3, 6, 9) not initialized" - gdb_test "ptype vla2(5, 45, 20)" \ -@@ -81,20 +81,20 @@ gdb_test "ptype vla2(5, 45, 20)" "type = $real" \ - - gdb_breakpoint [gdb_get_line_number "pvla-deassociated"] - gdb_continue_to_breakpoint "pvla-deassociated" --gdb_test "ptype pvla" "type = " "ptype pvla deassociated" -+gdb_test "ptype pvla" "type = $real \\(:,:,:\\)" "ptype pvla deassociated" - gdb_test "ptype pvla(5, 45, 20)" \ - "no such vector element \\\(vector not associated\\\)" \ - "ptype pvla(5, 45, 20) not associated" - - gdb_breakpoint [gdb_get_line_number "vla1-deallocated"] - gdb_continue_to_breakpoint "vla1-deallocated" --gdb_test "ptype vla1" "type = " "ptype vla1 not allocated" -+gdb_test "ptype vla1" "type = $real \\(:,:,:\\)" "ptype vla1 not allocated" - gdb_test "ptype vla1(3, 6, 9)" "no such vector element \\\(vector not allocated\\\)" \ - "ptype vla1(3, 6, 9) not allocated" - - gdb_breakpoint [gdb_get_line_number "vla2-deallocated"] - gdb_continue_to_breakpoint "vla2-deallocated" --gdb_test "ptype vla2" "type = " "ptype vla2 not allocated" -+gdb_test "ptype vla2" "type = $real \\(:,:,:\\)" "ptype vla2 not allocated" - gdb_test "ptype vla2(5, 45, 20)" \ - "no such vector element \\\(vector not allocated\\\)" \ - "ptype vla2(5, 45, 20) not allocated" -diff --git a/gdb/testsuite/gdb.fortran/vla-strings.exp b/gdb/testsuite/gdb.fortran/vla-strings.exp -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.fortran/vla-strings.exp -@@ -0,0 +1,103 @@ -+# Copyright 2016 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 ".f90" -+ -+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \ -+ {debug f90 quiet}] } { -+ return -1 -+} -+ -+# check that all fortran standard datatypes will be -+# handled correctly when using as VLA's -+ -+if ![runto_main] { -+ untested "could not run to main" -+ return -1 -+} -+ -+gdb_breakpoint [gdb_get_line_number "var_char-allocated-1"] -+gdb_continue_to_breakpoint "var_char-allocated-1" -+set test "whatis var_char first time" -+gdb_test_multiple "whatis var_char" $test { -+ -re "type = PTR TO -> \\( character\\*10 \\)\r\n$gdb_prompt $" { -+ pass $test -+ } -+ -re "type = character\\*10\r\n$gdb_prompt $" { -+ pass $test -+ } -+} -+set test "ptype var_char first time" -+gdb_test_multiple "ptype var_char" $test { -+ -re "type = PTR TO -> \\( character\\*10 \\)\r\n$gdb_prompt $" { -+ pass $test -+ } -+ -re "type = character\\*10\r\n$gdb_prompt $" { -+ pass $test -+ } -+} -+ -+ -+gdb_test "next" "\\d+.*var_char = 'foo'.*" \ -+ "next to allocation status of var_char" -+gdb_test "print l" " = \\.TRUE\\." "print allocation status first time" -+ -+ -+gdb_breakpoint [gdb_get_line_number "var_char-filled-1"] -+gdb_continue_to_breakpoint "var_char-filled-1" -+set test "print var_char, var_char-filled-1" -+gdb_test_multiple "print var_char" $test { -+ -re "= \\(PTR TO -> \\( character\\*3 \\)\\) $hex\r\n$gdb_prompt $" { -+ gdb_test "print *var_char" "= 'foo'" "print *var_char, var_char-filled-1" -+ pass $test -+ } -+ -re "= 'foo'\r\n$gdb_prompt $" { -+ pass $test -+ } -+} -+set test "ptype var_char, var_char-filled-1" -+gdb_test_multiple "ptype var_char" $test { -+ -re "type = PTR TO -> \\( character\\*3 \\)\r\n$gdb_prompt $" { -+ pass $test -+ } -+ -re "type = character\\*3\r\n$gdb_prompt $" { -+ pass $test -+ } -+} -+gdb_test "print var_char(1)" " = 102 'f'" "print var_char(1)" -+gdb_test "print var_char(3)" " = 111 'o'" "print var_char(3)" -+ -+ -+gdb_breakpoint [gdb_get_line_number "var_char-filled-2"] -+gdb_continue_to_breakpoint "var_char-filled-2" -+set test "print var_char, var_char-filled-2" -+gdb_test_multiple "print var_char" $test { -+ -re "= \\(PTR TO -> \\( character\\*6 \\)\\) $hex\r\n$gdb_prompt $" { -+ gdb_test "print *var_char" "= 'foobar'" "print *var_char, var_char-filled-2" -+ pass $test -+ } -+ -re "= 'foobar'\r\n$gdb_prompt $" { -+ pass $test -+ } -+} -+set test "ptype var_char, var_char-filled-2" -+gdb_test_multiple "ptype var_char" $test { -+ -re "type = PTR TO -> \\( character\\*6 \\)\r\n$gdb_prompt $" { -+ pass $test -+ } -+ -re "type = character\\*6\r\n$gdb_prompt $" { -+ pass $test -+ } -+} -diff --git a/gdb/testsuite/gdb.fortran/vla-strings.f90 b/gdb/testsuite/gdb.fortran/vla-strings.f90 -new file mode 100644 ---- /dev/null -+++ b/gdb/testsuite/gdb.fortran/vla-strings.f90 -@@ -0,0 +1,39 @@ -+! Copyright 2016 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 . -+ -+program vla_strings -+ character(len=:), target, allocatable :: var_char -+ character(len=:), pointer :: var_char_p -+ logical :: l -+ -+ allocate(character(len=10) :: var_char) -+ l = allocated(var_char) ! var_char-allocated-1 -+ var_char = 'foo' -+ deallocate(var_char) ! var_char-filled-1 -+ l = allocated(var_char) ! var_char-deallocated -+ allocate(character(len=42) :: var_char) -+ l = allocated(var_char) -+ var_char = 'foobar' -+ var_char = '' ! var_char-filled-2 -+ var_char = 'bar' ! var_char-empty -+ deallocate(var_char) -+ allocate(character(len=21) :: var_char) -+ l = allocated(var_char) ! var_char-allocated-3 -+ var_char = 'johndoe' -+ var_char_p => var_char -+ l = associated(var_char_p) ! var_char_p-associated -+ var_char_p => null() -+ l = associated(var_char_p) ! var_char_p-not-associated -+end program vla_strings -diff --git a/gdb/testsuite/gdb.fortran/vla-type.exp b/gdb/testsuite/gdb.fortran/vla-type.exp ---- a/gdb/testsuite/gdb.fortran/vla-type.exp -+++ b/gdb/testsuite/gdb.fortran/vla-type.exp -@@ -132,7 +132,10 @@ gdb_test "ptype fivearr(2)%tone" \ - "End Type one" ] - - # Check allocation status of dynamic array and it's dynamic members --gdb_test "ptype fivedynarr" "type = " -+gdb_test "ptype fivedynarr" \ -+ [multi_line "type = Type five" \ -+ " Type one :: tone" \ -+ "End Type five \\(:\\)" ] - gdb_test "next" "" - gdb_test "ptype fivedynarr(2)" \ - [multi_line "type = Type five" \ -@@ -141,7 +144,7 @@ gdb_test "ptype fivedynarr(2)" \ - "ptype fivedynarr(2), tone is not allocated" - gdb_test "ptype fivedynarr(2)%tone" \ - [multi_line "type = Type one" \ -- " $int :: ivla\\(\\)" \ -+ " $int :: ivla\\(:,:,:\\)" \ - "End Type one" ] \ - "ptype fivedynarr(2)%tone, not allocated" - -diff --git a/gdb/testsuite/gdb.fortran/vla-value.exp b/gdb/testsuite/gdb.fortran/vla-value.exp ---- a/gdb/testsuite/gdb.fortran/vla-value.exp -+++ b/gdb/testsuite/gdb.fortran/vla-value.exp -@@ -35,7 +35,7 @@ gdb_breakpoint [gdb_get_line_number "vla1-init"] - gdb_continue_to_breakpoint "vla1-init" - gdb_test "print vla1" " = " "print non-allocated vla1" - gdb_test "print &vla1" \ -- " = \\\(PTR TO -> \\\( $real \\\(\\\)\\\)\\\) $hex" \ -+ " = \\\(PTR TO -> \\\( $real \\\(:,:,:\\\)\\\)\\\) $hex" \ - "print non-allocated &vla1" - gdb_test "print vla1(1,1,1)" "no such vector element \\\(vector not allocated\\\)" \ - "print member in non-allocated vla1 (1)" -@@ -76,7 +76,7 @@ gdb_test "print vla1(9, 9, 9)" " = 999" \ - # Try to access values in undefined pointer to VLA (dangling) - gdb_test "print pvla" " = " "print undefined pvla" - gdb_test "print &pvla" \ -- " = \\\(PTR TO -> \\\( $real \\\(\\\)\\\)\\\) $hex" \ -+ " = \\\(PTR TO -> \\\( $real \\\(:,:,:\\\)\\\)\\\) $hex" \ - "print non-associated &pvla" - gdb_test "print pvla(1, 3, 8)" "no such vector element \\\(vector not associated\\\)" \ - "print undefined pvla(1,3,8)" -diff --git a/gdb/testsuite/gdb.mi/mi-vla-fortran.exp b/gdb/testsuite/gdb.mi/mi-vla-fortran.exp ---- a/gdb/testsuite/gdb.mi/mi-vla-fortran.exp -+++ b/gdb/testsuite/gdb.mi/mi-vla-fortran.exp -@@ -51,10 +51,10 @@ mi_expect_stop "breakpoint-hit" "vla" "" ".*vla.f90" "$bp_lineno" \ - mi_gdb_test "500-data-evaluate-expression vla1" \ - "500\\^done,value=\"\"" "evaluate not allocated vla, before allocation" - --mi_create_varobj_checked vla1_not_allocated vla1 "" \ -+mi_create_varobj_checked vla1_not_allocated vla1 "$real \\(:\\)" \ - "create local variable vla1_not_allocated" - mi_gdb_test "501-var-info-type vla1_not_allocated" \ -- "501\\^done,type=\"\"" \ -+ "501\\^done,type=\"$real \\(:\\)\"" \ - "info type variable vla1_not_allocated" - mi_gdb_test "502-var-show-format vla1_not_allocated" \ - "502\\^done,format=\"natural\"" \ -@@ -146,10 +146,10 @@ gdb_expect { - -re "580\\^done,value=\"\".*${mi_gdb_prompt}$" { - pass $test - -- mi_create_varobj_checked pvla2_not_associated pvla2 "" \ -+ mi_create_varobj_checked pvla2_not_associated pvla2 "$real \\(:,:\\)" \ - "create local variable pvla2_not_associated" - mi_gdb_test "581-var-info-type pvla2_not_associated" \ -- "581\\^done,type=\"\"" \ -+ "581\\^done,type=\"$real \\(:,:\\)\"" \ - "info type variable pvla2_not_associated" - mi_gdb_test "582-var-show-format pvla2_not_associated" \ - "582\\^done,format=\"natural\"" \ diff --git a/gdb/typeprint.c b/gdb/typeprint.c --- a/gdb/typeprint.c +++ b/gdb/typeprint.c diff --git a/gdb-vla-intel-stringbt-fix.patch b/gdb-vla-intel-stringbt-fix.patch index b2170f4c5493048a5342018b32e975663c0ddf04..cf0a5a356c35795419bfbcc2d8dafae0d90748ba 100644 --- a/gdb-vla-intel-stringbt-fix.patch +++ b/gdb-vla-intel-stringbt-fix.patch @@ -1,10 +1,3 @@ -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 - http://sourceware.org/ml/gdb-patches/2014-08/msg00025.html On Fri, 01 Aug 2014 09:20:19 +0200, Keven Boell wrote: @@ -59,117 +52,3 @@ diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c scoped_value_mark free_values; 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. -+! -+! 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. -+! -+! Ihis file is the Fortran source file for dynamic.exp. -+! Original file written by Jakub Jelinek . -+! Modified for the GDB testcase by Jan Kratochvil . -+ -+subroutine bar -+ real :: dummy -+ dummy = 1 -+end subroutine bar -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. -+ -+# 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. -+ -+set testfile "dynamic-other-frame" -+set srcfile1 ${testfile}.f90 -+set srcfile2 ${testfile}-stub.f90 -+set objfile2 [standard_output_file ${testfile}-stub.o] -+set executable ${testfile} -+set binfile [standard_output_file ${executable}] -+ -+if { [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${objfile2}" object {f90}] != "" -+ || [gdb_compile "${srcdir}/${subdir}/${srcfile1} ${objfile2}" "${binfile}" executable {debug f90}] != "" } { -+ untested "Couldn't compile ${srcfile1} or ${srcfile2}" -+ return -1 -+} -+ -+clean_restart ${executable} -+ -+gdb_test_no_output "set print frame-arguments all" -+ -+if ![runto bar_] then { -+ perror "couldn't run to bar_" -+ continue -+} -+ -+gdb_test "bt" {foo \(string='hello'.*} -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. -+! -+! 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. -+! -+! Ihis file is the Fortran source file for dynamic.exp. -+! Original file written by Jakub Jelinek . -+! Modified for the GDB testcase by Jan Kratochvil . -+ -+subroutine foo (string) -+ interface -+ subroutine bar -+ end subroutine -+ end interface -+ character string*(*) -+ call bar ! stop-here -+end subroutine foo -+program test -+ interface -+ subroutine foo (string) -+ character string*(*) -+ end subroutine -+ end interface -+ call foo ('hello') -+end diff --git a/gdb.spec b/gdb.spec index b6cd5384215e58977d8da33ab89064abd1756cb9..782becd81d89d6f2d26725e521e3331e71077e46 100644 --- a/gdb.spec +++ b/gdb.spec @@ -84,7 +84,6 @@ Patch091: gdb-gnat-dwarf-crash-3of3.patch Patch096: gdb-btrobust.patch Patch098: gdb-python-gil.patch Patch100: gdb-jit-reader-multilib.patch -Patch103: gdb-rhbz1350436-type-printers-error.patch Patch105: gdb-bz1219747-attach-kills.patch Patch106: gdb-fedora-libncursesw.patch Patch108: gdb-dts-rhel6-python-compat.patch @@ -96,7 +95,6 @@ Patch116: gdb-libexec-add-index.patch Patch119: gdb-archer.patch Patch120: gdb-vla-intel-fix-print-char-array.patch Patch122: gdb-rhbz881849-ipv6-1of3.patch -Patch123: gdb-rhbz881849-ipv6-2of3.patch Patch124: gdb-rhbz881849-ipv6-3of3.patch Patch125: gdb-rhbz1187581-power8-regs-1of7.patch Patch126: gdb-rhbz1187581-power8-regs-2of7.patch @@ -105,7 +103,6 @@ Patch128: gdb-rhbz1187581-power8-regs-4of7.patch Patch129: gdb-rhbz1187581-power8-regs-5of7.patch Patch130: gdb-rhbz1187581-power8-regs-6of7.patch Patch131: gdb-rhbz1187581-power8-regs-7of7.patch -Patch133: gdb-rhbz1491128-batch-mode-exit-status-2of2.patch Patch134: gdb-use-pulongest-aarch64-linux-tdep.patch Patch6000: gdb-Detect-invalid-length-field-in-debug-frame-FDE-header.patch