Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(507)

Side by Side Diff: gdb/testsuite/gdb.base/sepdebug.exp

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gdb/testsuite/gdb.base/sepdebug.c ('k') | gdb/testsuite/gdb.base/sepsymtab.exp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 1988, 1990-1992, 1994-2000, 2002-2004, 2007-2012 Free 1 # Copyright 1988, 1990-1992, 1994-2000, 2002-2004, 2007-2012 Free
2 # Software Foundation, Inc. 2 # Software Foundation, Inc.
3 3
4 # This program is free software; you can redistribute it and/or modify 4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by 5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 3 of the License, or 6 # the Free Software Foundation; either version 3 of the License, or
7 # (at your option) any later version. 7 # (at your option) any later version.
8 # 8 #
9 # This program is distributed in the hope that it will be useful, 9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details. 12 # GNU General Public License for more details.
13 # 13 #
14 # You should have received a copy of the GNU General Public License 14 # You should have received a copy of the GNU General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>. 15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 16
17 # Based on break.exp, written by Rob Savoye. (rob@cygnus.com) 17 # Based on break.exp, written by Rob Savoye. (rob@cygnus.com)
18 # Modified to test gdb's handling of separate debug info files. 18 # Modified to test gdb's handling of separate debug info files.
19 # Modified to test gdb's handling of a debug-id retrieval. 19 # Modified to test gdb's handling of a debug-id retrieval.
20 20
21 # This file has two parts. The first is testing that gdb behaves 21 # This file has two parts. The first is testing that gdb behaves
22 # normally after reading in an executable and its corresponding 22 # normally after reading in an executable and its corresponding
23 # separate debug file. The second moves the .debug file to a different 23 # separate debug file. The second moves the .debug file to a different
24 # location and tests the "set debug-file-directory" command. 24 # location and tests the "set debug-file-directory" command.
25 # The third is for testing build-id retrievel by finding the separate 25 # The third is for testing build-id retrievel by finding the separate
26 # ".debug-id/ab/cdef.debug" file. 26 # ".debug-id/ab/cdef.debug" file.
27 27
28 28
29 if $tracelevel then {
30 strace $tracelevel
31 }
32
33 # 29 #
34 # test running programs 30 # test running programs
35 # 31 #
36 32
37 set testfile "sepdebug" 33 set testfile "sepdebug"
38 set srcfile ${testfile}.c 34 set srcfile ${testfile}.c
39 set binfile ${objdir}/${subdir}/${testfile}${EXEEXT} 35 set binfile ${objdir}/${subdir}/${testfile}${EXEEXT}
40 36
41 if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb ug nowarnings}] != "" } { 37 if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb ug nowarnings}] != "" } {
42 untested sepdebug.exp 38 untested sepdebug.exp
43 return -1 39 return -1
44 } 40 }
45 41
46 # Note: the procedure gdb_gnu_strip_debug will produce an executable called 42 # Note: the procedure gdb_gnu_strip_debug will produce an executable called
47 # ${binfile}, which is just like the executable ($binfile) but without 43 # ${binfile}, which is just like the executable ($binfile) but without
48 # the debuginfo. Instead $binfile has a .gnudebuglink section which contains 44 # the debuginfo. Instead $binfile has a .gnu_debuglink section which contains
49 # the name of a debuginfo only file. This file will be stored in the 45 # the name of a debuginfo only file. This file will be stored in the
50 # gdb.base/ subdirectory. 46 # gdb.base/ subdirectory.
51 47
52 if [gdb_gnu_strip_debug $binfile] { 48 if [gdb_gnu_strip_debug $binfile] {
53 # check that you have a recent version of strip and objcopy installed 49 # check that you have a recent version of strip and objcopy installed
54 unsupported "cannot produce separate debug info files" 50 unsupported "cannot produce separate debug info files"
55 return -1 51 return -1
56 } 52 }
57 53
58 gdb_exit 54 #
59 gdb_start 55 # PR gdb/9538. Verify that symlinked executable still finds the separate
60 gdb_reinitialize_dir $srcdir/$subdir 56 # debuginfo.
61 gdb_load ${binfile} 57 #
58 set old_subdir ${subdir}
59 set subdir ${subdir}/pr9538
60
61 # Cleanup any stale state.
62 remote_exec build "rm -rf ${subdir}"
63
64 remote_exec build "mkdir ${subdir}"
65 remote_exec build "ln -s ${binfile} ${subdir}"
66 clean_restart ${testfile}${EXEEXT}
62 if { $gdb_file_cmd_debug_info != "debug" } then { 67 if { $gdb_file_cmd_debug_info != "debug" } then {
63 fail "No debug information found." 68 fail "No debug information found."
64 } 69 }
65 70
66 if [target_info exists gdb_stub] { 71 # Restore subdir
67 gdb_step_for_stub; 72 set subdir ${old_subdir}
73
74 clean_restart ${testfile}${EXEEXT}
75 if { $gdb_file_cmd_debug_info != "debug" } then {
76 fail "No debug information found."
68 } 77 }
78
69 # 79 #
70 # test simple breakpoint setting commands 80 # test simple breakpoint setting commands
71 # 81 #
72 82
73 # 83 #
74 # test break at function 84 # test break at function
75 # 85 #
76 gdb_test "break main" \ 86 gdb_test "break main" \
77 "Breakpoint.*at.* file .*$srcfile, line.*" \ 87 "Breakpoint.*at.* file .*$srcfile, line.*" \
78 "breakpoint function" 88 "breakpoint function"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 # Verify the breakpoint was put at the start of the conditional. 143 # Verify the breakpoint was put at the start of the conditional.
134 # 144 #
135 gdb_test "break multi_line_if_conditional" \ 145 gdb_test "break multi_line_if_conditional" \
136 "Breakpoint.*at.* file .*$srcfile, line $bp_location3\\." \ 146 "Breakpoint.*at.* file .*$srcfile, line $bp_location3\\." \
137 "breakpoint at start of multi line if conditional" 147 "breakpoint at start of multi line if conditional"
138 148
139 gdb_test "break multi_line_while_conditional" \ 149 gdb_test "break multi_line_while_conditional" \
140 "Breakpoint.*at.* file .*$srcfile, line $bp_location4\\." \ 150 "Breakpoint.*at.* file .*$srcfile, line $bp_location4\\." \
141 "breakpoint at start of multi line while conditional" 151 "breakpoint at start of multi line while conditional"
142 152
143 set bp_location5 [gdb_get_line_number "set breakpoint 5 here"]
144 set bp_location6 [gdb_get_line_number "set breakpoint 6 here"] 153 set bp_location6 [gdb_get_line_number "set breakpoint 6 here"]
145 154
146 # 155 set main_line $bp_location6
147 # check to see what breakpoints are set
148 #
149 if [target_info exists gdb_stub] {
150 set main_line $bp_location5
151 } else {
152 set main_line $bp_location6
153 }
154 156
155 set bp_location7 [gdb_get_line_number "set breakpoint 7 here"] 157 set bp_location7 [gdb_get_line_number "set breakpoint 7 here"]
156 set bp_location8 [gdb_get_line_number "set breakpoint 8 here"] 158 set bp_location8 [gdb_get_line_number "set breakpoint 8 here"]
157 set bp_location9 [gdb_get_line_number "set breakpoint 9 here"] 159 set bp_location9 [gdb_get_line_number "set breakpoint 9 here"]
158 160
159 gdb_test "info break" \ 161 gdb_test "info break" \
160 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 162 "Num Type\[ \]+Disp Enb Address\[ \]+What.*
161 \[0-9\]+\[\t \]+breakpoint keep y.* in main at .*$srcfile:$main_line.* 163 \[0-9\]+\[\t \]+breakpoint keep y.* in main at .*$srcfile:$main_line.*
162 \[0-9\]+\[\t \]+breakpoint keep y.* in marker2 at .*$srcfile:($bp_location8| $bp_location9).* 164 \[0-9\]+\[\t \]+breakpoint keep y.* in marker2 at .*$srcfile:($bp_location8| $bp_location9).*
163 \[0-9\]+\[\t \]+breakpoint keep y.* in factorial at .*$srcfile:$bp_location7 .* 165 \[0-9\]+\[\t \]+breakpoint keep y.* in factorial at .*$srcfile:$bp_location7 .*
164 \[0-9\]+\[\t \]+breakpoint keep y.* in main at .*$srcfile:$bp_location1.* 166 \[0-9\]+\[\t \]+breakpoint keep y.* in main at .*$srcfile:$bp_location1.*
165 \[0-9\]+\[\t \]+breakpoint keep y.* in main at .*$srcfile:$bp_location1.* 167 \[0-9\]+\[\t \]+breakpoint keep y.* in main at .*$srcfile:$bp_location1.*
166 \[0-9\]+\[\t \]+breakpoint keep y.* in main at .*$srcfile:$bp_location2.* 168 \[0-9\]+\[\t \]+breakpoint keep y.* in main at .*$srcfile:$bp_location2.*
167 \[0-9\]+\[\t \]+breakpoint keep y.* in multi_line_if_conditional at .*$srcfi le:$bp_location3.* 169 \[0-9\]+\[\t \]+breakpoint keep y.* in multi_line_if_conditional at .*$srcfi le:$bp_location3.*
168 \[0-9\]+\[\t \]+breakpoint keep y.* in multi_line_while_conditional at .*$sr cfile:$bp_location4" \ 170 \[0-9\]+\[\t \]+breakpoint keep y.* in multi_line_while_conditional at .*$sr cfile:$bp_location4" \
169 "breakpoint info" 171 "breakpoint info"
170 172
171 # FIXME: The rest of this test doesn't work with anything that can't 173 # FIXME: The rest of this test doesn't work with anything that can't
172 # handle arguments. 174 # handle arguments.
173 # Huh? There doesn't *appear* to be anything that passes arguments 175 # Huh? There doesn't *appear* to be anything that passes arguments
174 # below. 176 # below.
175 if [istarget "mips-idt-*"] then {
176 return
177 }
178 177
179 # 178 #
180 # run until the breakpoint at main is hit. For non-stubs-using targets. 179 # run until the breakpoint at main is hit. For non-stubs-using targets.
181 # 180 #
182 gdb_run_cmd 181 gdb_run_cmd
183 gdb_expect { 182 gdb_expect {
184 -re "Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$srcfile:$bp_location6.* $bp_location6\[\t \]+if .argc.* \{.*$gdb_prompt $" { 183 -re "Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$srcfile:$bp_location6.* $bp_location6\[\t \]+if .argc.* \{.*$gdb_prompt $" {
185 pass "run until function breakpoint" 184 pass "run until function breakpoint"
186 } 185 }
187 -re "$gdb_prompt $" { 186 -re "$gdb_prompt $" {
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 # 371 #
373 if ![runto_main] then { fail "sepdebug tests suppressed" } 372 if ![runto_main] then { fail "sepdebug tests suppressed" }
374 373
375 gdb_test_multiple "break $bp_location1" \ 374 gdb_test_multiple "break $bp_location1" \
376 "set to-be-silent break bp_location1" { 375 "set to-be-silent break bp_location1" {
377 -re "Breakpoint (\[0-9\]*) at .*, line $bp_location1.*$gdb_prompt $" { 376 -re "Breakpoint (\[0-9\]*) at .*, line $bp_location1.*$gdb_prompt $" {
378 pass "set to-be-silent break bp_location1" 377 pass "set to-be-silent break bp_location1"
379 } 378 }
380 } 379 }
381 380
382 send_gdb "commands $expect_out(1,string)\n" 381 gdb_test "commands $expect_out(1,string)\nsilent\nend" ">end" "set silent break bp_location1"
383 send_gdb "silent\n"
384 send_gdb "end\n"
385 gdb_expect {
386 -re ".*$gdb_prompt $"\
387 {pass "set silent break bp_location1"}
388 timeout {fail "(timeout) set silent break bp_location1"}
389 }
390 382
391 gdb_test "info break $expect_out(1,string)" \ 383 gdb_test "info break $expect_out(1,string)" \
392 "\[0-9\]*\[ \t\]*breakpoint.*:$bp_location1\r\n\[ \t\]*silent.*" \ 384 "\[0-9\]*\[ \t\]*breakpoint.*:$bp_location1\r\n\[ \t\]*silent.*" \
393 "info silent break bp_location1" 385 "info silent break bp_location1"
394 386
395 gdb_test "continue" "Continuing.*" "hit silent break bp_location1" 387 gdb_test "continue" "Continuing.*" "hit silent break bp_location1"
396 388
397 gdb_test "bt" "#0 main .* at .*:$bp_location1.*" \ 389 gdb_test "bt" "#0 main .* at .*:$bp_location1.*" \
398 "stopped for silent break bp_location1" 390 "stopped for silent break bp_location1"
399 391
400 # Verify that GDB can at least parse a breakpoint with the 392 # Verify that GDB can at least parse a breakpoint with the
401 # "thread" keyword. (We won't attempt to test here that a 393 # "thread" keyword. (We won't attempt to test here that a
402 # thread-specific breakpoint really triggers appropriately. 394 # thread-specific breakpoint really triggers appropriately.
403 # The gdb.threads subdirectory contains tests for that.) 395 # The gdb.threads subdirectory contains tests for that.)
404 # 396 #
405 set bp_location12 [gdb_get_line_number "set breakpoint 12 here"] 397 set bp_location12 [gdb_get_line_number "set breakpoint 12 here"]
406 398
407 gdb_test "break $bp_location12 thread 999" "Unknown thread 999.*" \ 399 gdb_test "break $bp_location12 thread 999" "Unknown thread 999.*" \
408 "thread-specific breakpoint on non-existent thread disallowed" 400 "thread-specific breakpoint on non-existent thread disallowed"
409 401
410 gdb_test "break $bp_location12 thread foo" \ 402 gdb_test "break $bp_location12 thread foo" \
411 "Junk after thread keyword.*" \ 403 "Junk after thread keyword.*" \
412 "thread-specific breakpoint on bogus thread ID disallowed" 404 "thread-specific breakpoint on bogus thread ID disallowed"
413 405
414 # Verify that GDB responds gracefully to a breakpoint command with 406 # Verify that GDB responds gracefully to a breakpoint command with
415 # trailing garbage. 407 # trailing garbage.
416 # 408 #
417 409
418 gdb_test "break $bp_location12 foo" \ 410 gdb_test "break $bp_location12 foo" \
419 "Junk at end of arguments.*" \ 411 "malformed linespec error: unexpected string, \"foo\".*" \
420 "breakpoint with trailing garbage disallowed" 412 "breakpoint with trailing garbage disallowed"
421 413
422 # Verify that GDB responds gracefully to a "clear" command that has 414 # Verify that GDB responds gracefully to a "clear" command that has
423 # no matching breakpoint. (First, get us off the current source line, 415 # no matching breakpoint. (First, get us off the current source line,
424 # which we know has a breakpoint.) 416 # which we know has a breakpoint.)
425 # 417 #
426 418
427 gdb_test "next" "marker1.*" "step over breakpoint" 419 gdb_test "next" "marker1.*" "step over breakpoint"
428 420
429 gdb_test "clear 81" "No breakpoint at 81.*" \ 421 gdb_test "clear 81" "No breakpoint at 81.*" \
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 if [target_info exists gdb,noresults] { gdb_suppress_tests } 642 if [target_info exists gdb,noresults] { gdb_suppress_tests }
651 gdb_continue_to_end "recursive next test" 643 gdb_continue_to_end "recursive next test"
652 gdb_stop_suppressing_tests; 644 gdb_stop_suppressing_tests;
653 } 645 }
654 646
655 test_next_with_recursion 647 test_next_with_recursion
656 648
657 649
658 #******** 650 #********
659 651
660 proc test_different_dir {type test_different_dir xfail} { 652 proc test_different_dir {type test_different_dir xfail} { with_test_prefix "$typ e" {
661 global srcdir subdir objdir binfile srcfile timeout gdb_prompt 653 global srcdir subdir objdir binfile srcfile timeout gdb_prompt
662 global pf_prefix
663 global bp_location6 decimal hex 654 global bp_location6 decimal hex
664 655
665 set old_pf_prefix $pf_prefix
666 append pf_prefix " $type:"
667
668 gdb_exit 656 gdb_exit
669 gdb_start 657 gdb_start
670 gdb_reinitialize_dir $srcdir/$subdir 658 gdb_reinitialize_dir $srcdir/$subdir
671 gdb_test_no_output "set debug-file-directory ${test_different_dir}" \ 659 gdb_test_no_output "set debug-file-directory ${test_different_dir}" \
672 "set separate debug location" 660 "set separate debug location"
673 gdb_load ${binfile} 661 gdb_load ${binfile}
674 662
675 if [target_info exists gdb_stub] {
676 gdb_step_for_stub;
677 }
678
679 # 663 #
680 # test break at function 664 # test break at function
681 # 665 #
682 if {$xfail} { 666 if {$xfail} {
683 setup_xfail "*-*-*" 667 setup_xfail "*-*-*"
684 } 668 }
685 gdb_test "break main" \ 669 gdb_test "break main" \
686 "Breakpoint.*at.* file .*$srcfile, line.*" \ 670 "Breakpoint.*at.* file .*$srcfile, line.*" \
687 "breakpoint function, optimized file" 671 "breakpoint function, optimized file"
688 672
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
751 } 735 }
752 736
753 737
754 # Reset the default arguments for VxWorks 738 # Reset the default arguments for VxWorks
755 if [istarget "*-*-vxworks*"] { 739 if [istarget "*-*-vxworks*"] {
756 set timeout 10 740 set timeout 10
757 verbose "Timeout is now $timeout seconds" 2 741 verbose "Timeout is now $timeout seconds" 2
758 gdb_test_no_output "set args main" 742 gdb_test_no_output "set args main"
759 } 743 }
760 744
761 set pf_prefix $old_pf_prefix
762 # proc test_different_dir 745 # proc test_different_dir
763 } 746 }}
764 747
765 748
766 # now move the .debug file to a different location so that we can test 749 # now move the .debug file to a different location so that we can test
767 # the "set debug-file-directory" command. 750 # the "set debug-file-directory" command.
768 751
769 set different_dir "${objdir}/${subdir}/${testfile}.dir" 752 set different_dir "${objdir}/${subdir}/${testfile}.dir"
770 set debugfile "${different_dir}/${objdir}/${subdir}/${testfile}.debug" 753 set debugfile "${different_dir}/${objdir}/${subdir}/${testfile}.debug"
771 remote_exec build "rm -rf $different_dir" 754 remote_exec build "rm -rf $different_dir"
772 remote_exec build "mkdir -p [file dirname $debugfile]" 755 remote_exec build "mkdir -p [file dirname $debugfile]"
773 remote_exec build "mv -f ${objdir}/${subdir}/${testfile}.debug $debugfile" 756 remote_exec build "mv -f ${objdir}/${subdir}/${testfile}.debug $debugfile"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
820 803
821 # Test also multiple directories can be specified. Without the build-id 804 # Test also multiple directories can be specified. Without the build-id
822 # reference GDB would find the separate debug info just at the same 805 # reference GDB would find the separate debug info just at the same
823 # location as the executable file. 806 # location as the executable file.
824 807
825 test_different_dir multiple-dirs "/doesnotexist:${objdir}/${subdir}" $xfail 808 test_different_dir multiple-dirs "/doesnotexist:${objdir}/${subdir}" $xfail
826 809
827 # Spare debug files may confuse testsuite runs in the future. 810 # Spare debug files may confuse testsuite runs in the future.
828 remote_exec build "rm -f ${objdir}/${subdir}/${build_id_debug_filename}" 811 remote_exec build "rm -f ${objdir}/${subdir}/${build_id_debug_filename}"
829 } 812 }
OLDNEW
« no previous file with comments | « gdb/testsuite/gdb.base/sepdebug.c ('k') | gdb/testsuite/gdb.base/sepsymtab.exp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698