+2009-31-10 Sergio Durigan Junior <sergiodj@linux.vnet.ibm.com>
+
+ * breakpoint.c (catch_syscall_split_args): Remove unecessary warning
+ displayed when the user provided a syscall name and there is no
+ XML support.
+ * xml-syscall.c: Renamed `_sysinfo' to `sysinfo'.
+ (set_xml_syscall_file_name): Remove syscall_warn_user.
+ (xml_init_syscalls_info): Remove warning.
+ (init_sysinfo): Update warnings.
+
2009-10-30 Vladimir Prus <vladimir@codesourcery.com>
Fix breakpoint commands in MI.
/* Check if the user provided a syscall name or a number. */
syscall_number = (int) strtol (cur_name, &endptr, 0);
if (*endptr == '\0')
- {
- get_syscall_by_number (syscall_number, &s);
-
- if (s.name == NULL)
- /* We can issue just a warning, but still create the catchpoint.
- This is because, even not knowing the syscall name that
- this number represents, we can still try to catch the syscall
- number. */
- warning (_("The number '%d' does not represent a known syscall."),
- syscall_number);
- }
+ get_syscall_by_number (syscall_number, &s);
else
{
/* We have a name. Let's check if it's valid and convert it
+2009-31-10 Sergio Durigan Junior <sergiodj@linux.vnet.ibm.com>
+
+ * gdb.base/catch-syscall.exp: Adapt the testcase in order to accept
+ the modified warnings for catch syscall. Verify if GDB was compiled
+ with support for lib expat, and choose which tests to run depending
+ on this.
+
2009-10-30 Vladimir Prus <vladimir@codesourcery.com>
* gdb.mi/mi-break.exp (test_breakpoint_commands): Test
check_for_program_end
}
+proc test_catch_syscall_fail_nodatadir {} {
+ global gdb_prompt
+
+ # Sanitizing.
+ delete_breakpoints
+
+ # 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
+
+ # Since the catchpoint was set, we must check if it's present at
+ # "info breakpoints"
+ check_info_bp_any_syscall
+
+ # Sanitizing.
+ delete_breakpoints
+}
+
proc do_syscall_tests {} {
global gdb_prompt srcdir
if [runto_main] then { test_catch_syscall_restarting_inferior }
}
-proc test_catch_syscall_fail_noxml {} {
- global gdb_prompt
-
- # Sanitizing.
- delete_breakpoints
-
- # Testing to see if we receive a warning when calling "catch syscall"
- # without XML support.
- set thistest "Catch syscall displays a warning when there is no XML support"
- gdb_test "catch syscall" "warning: Could not open .*warning: Could not load the syscall XML file .*GDB will not be able to display syscall names.*Catchpoint .*(syscall).*" $thistest
-
- # Since the catchpoint was set, we must check if it's present at
- # "info breakpoints"
- check_info_bp_any_syscall
-
- # Sanitizing.
- delete_breakpoints
-}
-
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
# we want GDB to display only numbers, not names. So, let's
# begin with the tests.
- # The first test is to see if GDB displays a warning when we
- # try to catch syscalls without the XML support.
- test_catch_syscall_fail_noxml
-
- # Now, let's test if we can catch syscalls without XML support.
+ # Let's test if we can catch syscalls without XML support.
# We should succeed, but GDB is not supposed to print syscall names.
if [runto_main] then { test_catch_syscall_without_args_noxml }
# Start with a fresh gdb
gdb_exit
+set do_xml_test ![gdb_skip_xml_test]
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
# Execute the tests, using XML support
-do_syscall_tests
+if $do_xml_test {
+ do_syscall_tests
+
+ # Now, we have to see if GDB displays a warning when we
+ # don't set the data-directory but try to use catch syscall
+ # anyway. For that, we must restart GDB first.
+ gdb_exit
+ gdb_start
+ gdb_reinitialize_dir $srcdir/$subdir
+ gdb_load ${binfile}
+ test_catch_syscall_fail_nodatadir
+}
# Restart gdb
/* Functions that provide the mechanism to parse a syscall XML file
and get its values.
- Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
- 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008
- Free Software Foundation, Inc.
+ Copyright (C) 2009 Free Software Foundation, Inc.
This file is part of GDB.
void
set_xml_syscall_file_name (const char *name)
{
- syscall_warn_user ();
+ return;
}
void
return NULL;
}
-
#else /* ! HAVE_LIBEXPAT */
/* Structure which describes a syscall. */
/* Structure used to store information about the available syscalls in
the system. */
-static const struct syscalls_info *_sysinfo = NULL;
+static const struct syscalls_info *sysinfo = NULL;
/* A flag to tell if we already initialized the structure above. */
static int have_initialized_sysinfo = 0;
full_file = xml_fetch_content_from_file (filename, gdb_datadir);
if (full_file == NULL)
- {
- warning (_("Could not open \"%s\""), filename);
- return NULL;
- }
+ return NULL;
back_to = make_cleanup (xfree, full_file);
/* Did we already try to initialize the structure? */
if (have_initialized_sysinfo)
return;
-/* if (xml_syscall_file == NULL)
- internal_error (__FILE__, __LINE__,
- _("This architecture has not set the XML syscall file "
- "name. This is a bug and should not happen; please "
- "report it.")); */
- _sysinfo = xml_init_syscalls_info (xml_syscall_file);
+ sysinfo = xml_init_syscalls_info (xml_syscall_file);
have_initialized_sysinfo = 1;
- if (_sysinfo == NULL)
+ if (sysinfo == NULL)
{
if (xml_syscall_file)
- /* The initialization failed. Let's show a warning
- message to the user (just this time) and leave. */
- warning (_("Could not load the syscall XML file `%s'.\n\
-GDB will not be able to display syscall names."), xml_syscall_file);
+ warning (_("\
+Could not load the syscall XML file `%s'."), xml_syscall_file);
else
- /* There's no file to open. Let's warn the user. */
- warning (_("There is no XML file to open.\n\
-GDB will not be able to display syscall names."));
+ warning (_("\
+There is no XML file to open."));
+
+ warning (_("\
+GDB will not be able to display syscall names nor to verify if\n\
+any provided syscall numbers are valid."));
}
}
init_sysinfo ();
s->number = syscall_number;
- s->name = xml_get_syscall_name (_sysinfo, syscall_number);
+ s->name = xml_get_syscall_name (sysinfo, syscall_number);
}
void
{
init_sysinfo ();
- s->number = xml_get_syscall_number (_sysinfo, syscall_name);
+ s->number = xml_get_syscall_number (sysinfo, syscall_name);
s->name = syscall_name;
}
{
init_sysinfo ();
- return xml_list_of_syscalls (_sysinfo);
+ return xml_list_of_syscalls (sysinfo);
}
#endif /* ! HAVE_LIBEXPAT */