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

Unified Diff: gdb/testsuite/gdb.base/catch-syscall.exp

Issue 124383005: GDB 7.6.50 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@upstream
Patch Set: Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gdb/testsuite/gdb.base/catch-signal-fork.exp ('k') | gdb/testsuite/gdb.base/charset.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gdb/testsuite/gdb.base/catch-syscall.exp
diff --git a/gdb/testsuite/gdb.base/catch-syscall.exp b/gdb/testsuite/gdb.base/catch-syscall.exp
index 9054cfe04843544886ce978cd035af34f633a021..7f1bd292b44b4a982fa5c2ee9b03ffa45363e08c 100644
--- a/gdb/testsuite/gdb.base/catch-syscall.exp
+++ b/gdb/testsuite/gdb.base/catch-syscall.exp
@@ -1,5 +1,4 @@
-# Copyright 1997, 1999, 2007-2008, 2010-2012 Free Software Foundation,
-# Inc.
+# Copyright 1997-2013 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
@@ -35,14 +34,11 @@ if {![istarget "hppa*-hp-hpux*"] && ![istarget "*-linux*"]} then {
if { ![istarget "x86_64-*-linux*"] && ![istarget "i\[34567\]86-*-linux*"]
&& ![istarget "powerpc-*-linux*"] && ![istarget "powerpc64-*-linux*"]
&& ![istarget "sparc-*-linux*"] && ![istarget "sparc64-*-linux*"]
- && ![istarget "mips*-linux*"] } {
+ && ![istarget "mips*-linux*"] && ![istarget "arm*-linux*"] } {
continue
}
-global srcfile
-set testfile "catch-syscall"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
+standard_testfile
# All (but the last) syscalls from the example code
# They are ordered according to the file, so do not change this.
@@ -172,106 +168,124 @@ proc check_for_program_end {} {
proc test_catch_syscall_without_args {} {
global gdb_prompt all_syscalls last_syscall
- # Trying to set the syscall
- set thistest "setting catch syscall without arguments"
- gdb_test "catch syscall" "Catchpoint .*(syscall).*" $thistest
+ with_test_prefix "without arguments" {
+ # Trying to set the syscall.
+ gdb_test "catch syscall" "Catchpoint .*(syscall).*"
- check_info_bp_any_syscall
+ check_info_bp_any_syscall
- # We have to check every syscall
- foreach name $all_syscalls {
- check_continue $name
- }
+ # We have to check every syscall.
+ foreach name $all_syscalls {
+ check_continue $name
+ }
- # At last but not least, we check if the inferior
- # has called the last (exit) syscall.
- check_call_to_syscall $last_syscall
+ # At last but not least, we check if the inferior has called
+ # the last (exit) syscall.
+ check_call_to_syscall $last_syscall
- # Now let's see if the inferior correctly finishes.
- check_for_program_end
+ # Now let's see if the inferior correctly finishes.
+ check_for_program_end
+ }
}
proc test_catch_syscall_with_args {} {
- global gdb_prompt
- set syscall_name "close"
+ with_test_prefix "with arguments" {
+ global gdb_prompt
- insert_catch_syscall_with_arg $syscall_name
+ set syscall_name "close"
+ insert_catch_syscall_with_arg $syscall_name
- # Can we continue until we catch the syscall?
- check_continue $syscall_name
+ # Can we continue until we catch the syscall?
+ check_continue $syscall_name
- # Now let's see if the inferior correctly finishes.
- check_for_program_end
+ # Now let's see if the inferior correctly finishes.
+ check_for_program_end
+ }
}
proc test_catch_syscall_with_many_args {} {
- global gdb_prompt all_syscalls all_syscalls_numbers
+ with_test_prefix "with many arguments" {
+ global gdb_prompt all_syscalls all_syscalls_numbers
- insert_catch_syscall_with_many_args $all_syscalls $all_syscalls_numbers
+ insert_catch_syscall_with_many_args $all_syscalls $all_syscalls_numbers
- # Can we continue until we catch the syscalls?
- foreach name $all_syscalls {
- check_continue $name
- }
+ # Can we continue until we catch the syscalls?
+ foreach name $all_syscalls {
+ check_continue $name
+ }
- # Now let's see if the inferior correctly finishes.
- check_for_program_end
+ # Now let's see if the inferior correctly finishes.
+ check_for_program_end
+ }
}
proc test_catch_syscall_with_wrong_args {} {
- global gdb_prompt
- # mlock is not called from the source
- set syscall_name "mlock"
-
- insert_catch_syscall_with_arg $syscall_name
-
- # Now, we must verify if the program stops with a continue.
- # If it doesn't, everything is right (since we don't have
- # a syscall named "mlock" in it). Otherwise, this is a failure.
- set thistest "catch syscall with unused syscall ($syscall_name)"
- gdb_continue_to_end $thistest
+ with_test_prefix "wrong args" {
+ global gdb_prompt
+
+ # mlock is not called from the source
+ set syscall_name "mlock"
+ insert_catch_syscall_with_arg $syscall_name
+
+ # Now, we must verify if the program stops with a continue.
+ # If it doesn't, everything is right (since we don't have
+ # a syscall named "mlock" in it). Otherwise, this is a failure.
+ set thistest "catch syscall with unused syscall ($syscall_name)"
+ gdb_continue_to_end $thistest
+ }
}
proc test_catch_syscall_restarting_inferior {} {
- global gdb_prompt
- set syscall_name "chroot"
+ with_test_prefix "restarting inferior" {
+ global gdb_prompt
+
+ set syscall_name "chroot"
- insert_catch_syscall_with_arg $syscall_name
+ with_test_prefix "entry" {
+ insert_catch_syscall_with_arg $syscall_name
- # Let's first reach the call of the syscall.
- check_call_to_syscall $syscall_name
+ # Let's first reach the entry of the syscall.
+ check_call_to_syscall $syscall_name
+ }
- # Now, restart the program
- rerun_to_main
+ with_test_prefix "entry/return" {
+ # Now, restart the program.
+ rerun_to_main
- # And check for call/return
- check_continue $syscall_name
+ # And check for entry/return.
+ check_continue $syscall_name
- # Can we finish?
- check_for_program_end
+ # Can we finish?
+ check_for_program_end
+ }
+ }
}
proc test_catch_syscall_fail_nodatadir {} {
- global gdb_prompt
+ with_test_prefix "fail no datadir" {
+ global gdb_prompt
- # Sanitizing.
- delete_breakpoints
+ # Sanitizing.
+ delete_breakpoints
- # Make sure GDB doesn't load the syscalls xml from the system data
- # directory.
- gdb_test_no_output "set data-directory /the/path/to/nowhere"
+ # Make sure GDB doesn't load the syscalls xml from the system
+ # data directory.
+ gdb_test_no_output "set data-directory /the/path/to/nowhere"
- # Testing to see if we receive a warning when calling "catch syscall"
- # without XML support (without datadir).
- set thistest "Catch syscall displays a warning when there is no XML support (no datadir set)"
- gdb_test "catch syscall" "warning: Could not load the syscall XML file.*warning: GDB will not be able to display syscall names nor to verify if.*any provided syscall numbers are valid.*Catchpoint .*(syscall).*" $thistest
+ # Testing to see if we receive a warning when calling "catch
+ # syscall" without XML support (without datadir).
+ set thistest "catch syscall displays a warning when there is no XML support"
+ gdb_test "catch syscall" \
+ "warning: Could not load the syscall XML file.*warning: GDB will not be able to display syscall names nor to verify if.*any provided syscall numbers are valid.*Catchpoint .*(syscall).*" \
+ $thistest
- # Since the catchpoint was set, we must check if it's present at
- # "info breakpoints"
- check_info_bp_any_syscall
+ # Since the catchpoint was set, we must check if it's present
+ # in "info breakpoints" output.
+ check_info_bp_any_syscall
- # Sanitizing.
- delete_breakpoints
+ # Sanitizing.
+ delete_breakpoints
+ }
}
proc do_syscall_tests {} {
@@ -288,6 +302,11 @@ proc do_syscall_tests {} {
set thistest "catch syscall to a nonsense syscall is prohibited"
gdb_test "catch syscall nonsense_syscall" "Unknown syscall name .*" $thistest
+ # Regression test for syscall completer bug.
+ gdb_test "complete catch syscall close chroo" \
+ "catch syscall close chroot" \
+ "complete catch syscall with multiple words"
+
# Testing the 'catch syscall' command without arguments.
# This test should catch any syscalls.
if [runto_main] then { test_catch_syscall_without_args }
@@ -310,68 +329,74 @@ proc do_syscall_tests {} {
}
proc test_catch_syscall_without_args_noxml {} {
- # We will need the syscall names even not using it
- # because we need to know know many syscalls are in
- # the example file.
- global gdb_prompt all_syscalls last_syscall
-
- delete_breakpoints
-
- set thistest "Catch syscall without arguments and without XML support"
- gdb_test "catch syscall" "Catchpoint .*(syscall).*"
-
- # Now, we should be able to set a catchpoint,
- # and GDB shall not display the warning anymore.
- foreach name $all_syscalls {
- # Unfortunately, we don't know the syscall number
- # that will be caught because this information is
- # arch-dependent. Thus, we try to catch anything
- # similar to a number.
- check_continue "\[0-9\]*"
+ with_test_prefix "without args noxml" {
+ # We will need the syscall names even not using it because we
+ # need to know know many syscalls are in the example file.
+ global gdb_prompt all_syscalls last_syscall
+
+ delete_breakpoints
+
+ gdb_test "catch syscall" "Catchpoint .*(syscall).*"
+
+ # Now, we should be able to set a catchpoint, and GDB shall
+ # not display the warning anymore.
+ foreach name $all_syscalls {
+ # Unfortunately, we don't know the syscall number that
+ # will be caught because this information is
+ # arch-dependent. Thus, we try to catch anything similar
+ # to a number.
+ with_test_prefix "$name" {
+ check_continue "\[0-9\]*"
+ }
+ }
+
+ # At last but not least, we check if the inferior has called
+ # the last (exit) syscall.
+ check_call_to_syscall "\[0-9\]*"
+
+ delete_breakpoints
}
-
- # At last but not least, we check if the inferior
- # has called the last (exit) syscall.
- check_call_to_syscall "\[0-9\]*"
-
- delete_breakpoints
}
proc test_catch_syscall_with_args_noxml {} {
- global gdb_prompt
+ with_test_prefix "with args noxml" {
+ global gdb_prompt
- # The number of the "close" syscall. This is our
- # option for a "long-estabilished" syscall in all
- # Linux architectures, but unfortunately x86_64 and
- # a few other platforms don't "follow the convention".
- # Because of this, we need this ugly check :-(.
- set close_number ""
- if { [istarget "x86_64-*-linux*"] } {
- set close_number "3"
- } else {
- set close_number "6"
- }
+ # The number of the "close" syscall. This is our option for a
+ # "long-estabilished" syscall in all Linux architectures, but
+ # unfortunately x86_64 and a few other platforms don't "follow
+ # the convention". Because of this, we need this ugly check
+ # :-(.
+ set close_number ""
+ if { [istarget "x86_64-*-linux*"] } {
+ set close_number "3"
+ } else {
+ set close_number "6"
+ }
- delete_breakpoints
+ delete_breakpoints
- insert_catch_syscall_with_arg $close_number
+ insert_catch_syscall_with_arg $close_number
- check_continue $close_number
+ check_continue $close_number
- delete_breakpoints
+ delete_breakpoints
+ }
}
proc test_catch_syscall_with_wrong_args_noxml {} {
- global gdb_prompt
+ with_test_prefix "with wrong args noxml" {
+ global gdb_prompt
- delete_breakpoints
+ delete_breakpoints
- # Even without XML support, GDB should not accept unknown
- # syscall names for the catchpoint.
- set thistest "Catch a nonsense syscall without XML support"
- gdb_test "catch syscall nonsense_syscall" "Unknown syscall name .nonsense_syscall.*" $thistest
+ # Even without XML support, GDB should not accept unknown
+ # syscall names for the catchpoint.
+ gdb_test "catch syscall nonsense_syscall" \
+ "Unknown syscall name .nonsense_syscall.*"
- delete_breakpoints
+ delete_breakpoints
+ }
}
proc do_syscall_tests_without_xml {} {
@@ -406,11 +431,12 @@ proc do_syscall_tests_without_xml {} {
proc fill_all_syscalls_numbers {} {
global all_syscalls_numbers
- # For Linux on x86, PPC, PPC64, SPARC and SPARC64, the numbers for the syscalls
- # "close" and "chroot" are the same.
+ # For Linux on x86, PPC, PPC64, SPARC, SPARC64 and ARM,
+ # the numbers for the syscalls "close" and "chroot" are the same.
if { [istarget "i\[34567\]86-*-linux*"]
|| [istarget "powerpc-*-linux*"] || [istarget "powerpc64-*-linux*"]
- || [istarget "sparc-*-linux*"] || [istarget "sparc64-*-linux*"] } {
+ || [istarget "sparc-*-linux*"] || [istarget "sparc64-*-linux*"]
+ || [istarget "arm*-linux*"] } {
set all_syscalls_numbers { "6" "61" }
}
}
« no previous file with comments | « gdb/testsuite/gdb.base/catch-signal-fork.exp ('k') | gdb/testsuite/gdb.base/charset.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698