[1/1] Fix internal warning when "gdb -p xxx" (test)

Message ID 532916F6.9000808@mentor.com
State Superseded
Headers

Commit Message

Hui Zhu March 19, 2014, 4:03 a.m. UTC
  We found that the issue can be found by regression test.
So make a patch to make attach.exp can test "gdb -p xxx".

Thanks,
Hui

2014-03-19  Hui Zhu  <hui@codesourcery.com>

	* gdb.base/attach.exp (do_command_attach_tests): New.
  

Comments

Pedro Alves March 19, 2014, 10:28 a.m. UTC | #1
On 03/19/2014 04:03 AM, Hui Zhu wrote:

> +    eval "spawn $GDB $INTERNAL_GDBFLAGS $GDBFLAGS --pid=$testpid"
> +    expect {
> +	-re "Reading symbols from.*$gdb_prompt $" {
> +            pass "starting with --pid=$testpid"

Don't add the $testpid to the PASS/FAIL line, as it'll change between
testsuite runs, making gdb.sum diffs harder.

> +	}
> +	timeout 	{ fail "(timeout) starting with --pid=$testpid" }

Instead of repeating the text, write:

    set test "starting with --pid"
    expect {
	-re "Reading symbols from.*$gdb_prompt $" {
            pass "$test"
	}
	timeout {
            fail "$test (timeout)"
	}
    }

Otherwise OK.

Thanks!
  

Patch

--- a/gdb/testsuite/gdb.base/attach.exp
+++ b/gdb/testsuite/gdb.base/attach.exp
@@ -384,6 +384,48 @@  proc do_call_attach_tests {} {
      remote_exec build "kill -9 ${testpid}"
  }
  
+proc do_command_attach_tests {} {
+    global gdb_prompt
+    global binfile
+    global verbose
+    global GDB
+    global INTERNAL_GDBFLAGS
+    global GDBFLAGS
+
+    if ![isnative] then {
+	unsupported "command attach test"
+	return 0
+    }
+
+    # Start the program running and then wait for a bit, to be sure
+    # that it can be attached to.
+
+    set testpid [eval exec $binfile &]
+    exec sleep 2
+    if { [istarget "*-*-cygwin*"] } {
+	# testpid is the Cygwin PID, GDB uses the Windows PID, which might be
+	# different due to the way fork/exec works.
+	set testpid [ exec ps -e | gawk "{ if (\$1 == $testpid) print \$4; }" ]
+    }
+
+    gdb_exit
+    if $verbose>1 then {
+        send_user "Spawning $GDB $INTERNAL_GDBFLAGS $GDBFLAGS --pid=$testpid\n"
+    }
+
+    eval "spawn $GDB $INTERNAL_GDBFLAGS $GDBFLAGS --pid=$testpid"
+    expect {
+	-re "Reading symbols from.*$gdb_prompt $" {
+            pass "starting with --pid=$testpid"
+	}
+	timeout 	{ fail "(timeout) starting with --pid=$testpid" }
+    }
+
+    # Get rid of the process
+
+    remote_exec build "kill -9 ${testpid}"
+}
+
  
  # Start with a fresh gdb
  
@@ -404,4 +446,8 @@  gdb_start
  gdb_reinitialize_dir $srcdir/$subdir
  do_call_attach_tests
  
+# Test "gdb --pid"
+
+do_command_attach_tests
+
  return 0