Using a hello world a.out, I run into a segfault:
...
$ gcc hello.c
$ gdb -batch a.out -ex "catch syscall -1" -ex r
Catchpoint 1 (syscall -1)
Aborted (core dumped)
...
Fix this by erroring out if a negative syscall number is used in the
catch syscall command.
Tested on x86_64-linux.
gdb/ChangeLog:
2021-02-05 Tom de Vries <tdevries@suse.de>
PR breakpoints/27313
* break-catch-syscall.c (catch_syscall_split_args): Reject negative
syscall numbers.
gdb/testsuite/ChangeLog:
2021-02-05 Tom de Vries <tdevries@suse.de>
PR breakpoints/27313
* gdb.base/catch-syscall.exp: Check that "catch syscall -1" is
rejected.
+2021-02-05 Tom de Vries <tdevries@suse.de>
+
+ PR breakpoints/27313
+ * break-catch-syscall.c (catch_syscall_split_args): Reject negative
+ syscall numbers.
+
2021-02-05 Tom Tromey <tom@tromey.com>
* compile/compile-c-support.c (get_compile_context)
syscall_number = (int) strtol (cur_name, &endptr, 0);
if (*endptr == '\0')
{
+ if (syscall_number < 0)
+ error (_("Unknown syscall number '%d'."), syscall_number);
get_syscall_by_number (gdbarch, syscall_number, &s);
result.push_back (s.number);
}
+2021-02-05 Tom de Vries <tdevries@suse.de>
+
+ PR breakpoints/27313
+ * gdb.base/catch-syscall.exp: Check that "catch syscall -1" is
+ rejected.
+
2021-02-05 Tom de Vries <tdevries@suse.de>
* gdb.dwarf2/main-subprogram.exp: Add KFAIL for PR symtab/24549.
}
}
+# Test-case for PR27313. Verify that negative syscall numbers are refused.
+gdb_test "catch syscall -1" "Unknown syscall number '-1'\\."
+
# All (but the last) syscalls from the example code. It is filled in
# proc setup_all_syscalls.
set all_syscalls { }