binutils-gdb/gdb/testsuite/gdb.base
Gabriel Krisman Bertazi 4924df7977 Fix PR breakpoints/16297: catch syscall with syscall 0
Code rationale
==============
by: Gabriel Krisman Bertazi

This is a fix for bug 16297. The problem occurs when the user attempts
to catch any syscall 0 (such as syscall read on Linux/x86_64). GDB was
not able to catch the syscall and was missing the breakpoint.

Now, breakpoint_hit_catch_syscall returns immediately when it finds the
correct syscall number, avoiding a following check for the end of the
search vector, that returns a no hit if the syscall number was zero.

Testcase rationale
==================
by: Sergio Durigan Junior

This testcase is a little difficult to write.  By doing a quick
inspection at the Linux source, one can see that, in many targets, the
syscall number 0 is restart_syscall, which is forbidden to be called
from userspace.  Therefore, on many targets, there's just no way to test
this safely.

My decision was to take the simpler route and just adds the "read"
syscall on the default test.  Its number on x86_64 is zero, which is
"good enough" since many people here do their tests on x86_64 anyway and
it is a popular architecture.

However, there was another little gotcha.  When using "read" passing 0
as the third parameter (i.e., asking it to read 0 bytes), current libc
implementations could choose not to effectively call the syscall.
Therefore, the best solution was to create a temporary pipe, write 1
byte into it, and then read this byte from it.

gdb/ChangeLog
2013-12-19  Gabriel Krisman Bertazi  <gabriel@krisman.be>

	PR breakpoints/16297
	* breakpoint.c (breakpoint_hit_catch_syscall): Return immediately
	when expected syscall is hit.

gdb/testsuite/ChangeLog
2013-12-19  Sergio Durigan Junior  <sergiodj@redhat.com>

	PR breakpoints/16297
	* gdb.base/catch-syscall.c (read_syscall, pipe_syscall)
	(write_syscall): New variables.
	(main): Create a pipe, write 1 byte in it, and read 1 byte from
	it.
	* gdb.base/catch-syscall.exp (all_syscalls): Include "pipe,
	"write" and "read" syscalls.
	(fill_all_syscalls_numbers): Improve the way to obtain syscalls
	numbers.
2013-12-19 17:01:49 -02:00
..
comp-dir/subdir
a2-run.exp
advance.c
advance.exp simple changes in gdb.base 2013-11-04 11:02:07 -07:00
alias.exp
all-bin.exp
all-types.c
annota1.c
annota1.exp
annota3.c
annota3.exp
anon.c
anon.exp
args.c
args.exp
argv0-symlink.c
argv0-symlink.exp fix argv0-symlink.exp for parallel mode 2013-11-04 11:02:10 -07:00
arithmet.exp
arrayidx.c
arrayidx.exp
assign.exp
async-shell.c
async-shell.exp
async.c
async.exp
attach2.c
attach-pie-misread.c
attach-pie-misread.exp * lib/future.exp (gdb_find_objcopy, gdb_find_readelf): New procs. 2013-09-20 21:47:06 +00:00
attach-pie-noexec.c
attach-pie-noexec.exp
attach-twice.c
attach-twice.exp
attach.c
attach.exp
auxv.c
auxv.exp
average.c
bang.exp testsuite: Fix gdb.base/bang.exp for remote stubs without exit 2013-10-25 14:03:01 +00:00
bar.c
baz.c
bfp-test.c
bfp-test.exp
bigcore.c
bigcore.exp simple changes in gdb.base 2013-11-04 11:02:07 -07:00
bitfields2.c
bitfields2.exp
bitfields.c
bitfields.exp
bitops.exp
branches.c
break1.c
break-always.c
break-always.exp
break-caller-line.c
break-caller-line.exp
break-entry.exp
break-inline.c
break-inline.exp
break-interp-lib.c
break-interp-main.c
break-interp.exp * gdb.base/break-interp.exp: Fix indentation. 2013-09-16 23:42:58 +00:00
break-on-linker-gcd-function.cc
break-on-linker-gcd-function.exp
break-probes-solib.c
break-probes.c
break-probes.exp
break.c
break.exp * gdb.base/break.exp: Fix setting of $baz. 2013-12-06 10:19:01 -08:00
breakpoint-shadow.c
breakpoint-shadow.exp
call-ar-st.c
call-ar-st.exp
call-rt-st.c
call-rt-st.exp
call-sc.c
call-sc.exp
call-signal-resume.exp
call-signals.c
call-strs.c
call-strs.exp
callexit.c
callexit.exp
callfuncs.c * gdb.base/callfuncs.c (main): Assign malloc's return value 2013-11-27 10:39:26 -02:00
callfuncs.exp
catch-load-so.c
catch-load.c gdb/testsuite/ 2013-09-17 07:00:50 +00:00
catch-load.exp gdb/testsuite/ 2013-09-17 07:00:50 +00:00
catch-signal-fork.c
catch-signal-fork.exp
catch-signal.c
catch-signal.exp
catch-syscall.c Fix PR breakpoints/16297: catch syscall with syscall 0 2013-12-19 17:01:49 -02:00
catch-syscall.exp Fix PR breakpoints/16297: catch syscall with syscall 0 2013-12-19 17:01:49 -02:00
charset-malloc.c * gdb.base/callfuncs.c (main): Assign malloc's return value 2013-11-27 10:39:26 -02:00
charset.c
charset.exp
checkpoint.c update checkpoint test 2013-11-04 11:02:07 -07:00
checkpoint.exp update checkpoint test 2013-11-04 11:02:07 -07:00
chng-syms.c
chng-syms.exp
code_elim1.c
code_elim2.c
code_elim.exp
code-expr.exp
commands.exp 2013-10-21 Jose E. Marchesi <jose.marchesi@oracle.com> 2013-10-21 12:42:02 +00:00
completion.exp
complex.c
complex.exp
comprdebug.exp * lib/future.exp (gdb_find_objcopy, gdb_find_readelf): New procs. 2013-09-20 21:47:06 +00:00
cond-eval-mode.exp
cond-expr.exp
condbreak.exp
consecutive.c
consecutive.exp
constvars.c
constvars.exp
corefile.exp This patch adds a new convenience variable called "$_exitsignal", which 2013-10-07 05:34:11 +00:00
coremaker2.c
coremaker.c
ctxobj-f.c
ctxobj-m.c
ctxobj-v.c
ctxobj.exp
cursal.c
cursal.exp
cvexpr.c
cvexpr.exp
d10v.ld
d10vovly.c
dbx.exp
debug-expr.c
debug-expr.exp
default.exp This commit fixes a regression introduced by the new $_isvoid convenience 2013-09-17 19:24:51 +00:00
define.exp
del.c
del.exp
detach.exp
dfp-exprs.exp
dfp-test.c
dfp-test.exp
disabled-location.c
disabled-location.exp
disasm-end-cu-1.c
disasm-end-cu-2.c
disasm-end-cu.exp
disp-step-fork.c
disp-step-syscall.exp
disp-step-vfork.c
display.c
display.exp
dmsym_main.c
dmsym.c
dmsym.exp
dprintf-next.c
dprintf-next.exp
dprintf-non-stop.c
dprintf-non-stop.exp
dprintf-pending.c
dprintf-pending.exp
dprintf-pendshr.c
dprintf.c
dprintf.exp
dump.c
dump.exp simple changes in gdb.base 2013-11-04 11:02:07 -07:00
dup-sect.exp * lib/future.exp (gdb_find_objcopy, gdb_find_readelf): New procs. 2013-09-20 21:47:06 +00:00
dup-sect.S
duplicate-bp.c
duplicate-bp.exp
echo.exp
empty_exe.exp
ena-dis-br.exp * gdb.base/ena-dis-br.exp: Add missing quote to "step after continue 2013-11-23 16:43:29 -08:00
ending-run.c
ending-run.exp
enum_cond.c
enum_cond.exp
enumval.c
enumval.exp
environ.exp
eu-strip-infcall.c
eu-strip-infcall.exp
eval-avoid-side-effects.exp test: test eval routines with EVAL_AVOID_SIDE_EFFECTS flag set 2013-11-20 13:50:14 +00:00
eval-skip.exp
eval.exp
exe-lock.exp
execd-prog.c
exitsignal.exp This patch adds a new convenience variable called "$_exitsignal", which 2013-10-07 05:34:11 +00:00
expand-psymtabs.c
expand-psymtabs.exp
exprs.c
exprs.exp
fileio.c update fileio test 2013-11-04 11:02:08 -07:00
fileio.exp * gdb.base/fileio.exp: Make $dir2 writable after the test is done 2013-11-12 14:27:04 -08:00
filesym.c
filesym.exp
find-unmapped.c
find-unmapped.exp
find.c
find.exp
finish.exp
fixsection.c
fixsection.exp
fixsectshr.c
float.c
float.exp
foll-exec.c fix some "exec" tests 2013-11-04 11:02:10 -07:00
foll-exec.exp fix some "exec" tests 2013-11-04 11:02:10 -07:00
foll-fork.c
foll-fork.exp
foll-vfork-exit.c
foll-vfork.c fix some "exec" tests 2013-11-04 11:02:10 -07:00
foll-vfork.exp fix some "exec" tests 2013-11-04 11:02:10 -07:00
foo.c
fortran-sym-case.c
fortran-sym-case.exp
frame-args.c
frame-args.exp
freebpcmd.c
freebpcmd.exp
fullname.c
fullname.exp introduce relative_filename and use it 2013-11-04 11:02:08 -07:00
fullpath-expand-func.c
fullpath-expand.c
fullpath-expand.exp
func-ptr.c
func-ptr.exp
funcargs.c
funcargs.exp
gcore-buffer-overflow.c
gcore-buffer-overflow.exp fix some simple thinkos in the test suite 2013-11-04 10:55:58 -07:00
gcore-relro-lib.c
gcore-relro-main.c
gcore-relro-pie.c PR 11786 2013-11-07 16:43:39 -08:00
gcore-relro-pie.exp PR 11786 2013-11-07 16:43:39 -08:00
gcore-relro.exp
gcore.c
gcore.exp
gdb1056.exp
gdb1090.c
gdb1090.exp
gdb1250.c
gdb1250.exp
gdb1555-main.c
gdb1555.c
gdb1555.exp
gdb1821.c
gdb1821.exp
gdb11530.c
gdb11530.exp
gdb11531.c
gdb11531.exp
gdb_history
gdbindex-stabs-dwarf.c
gdbindex-stabs.c
gdbindex-stabs.exp
gdbvars.c Based on the discussion at: 2013-09-16 17:47:30 +00:00
gdbvars.exp Based on the discussion at: 2013-09-16 17:47:30 +00:00
gnu_vector.c
gnu_vector.exp 2013-10-21 Jose E. Marchesi <jose.marchesi@oracle.com> 2013-10-21 12:34:25 +00:00
gnu-debugdata.c
gnu-debugdata.exp * lib/future.exp (gdb_find_objcopy, gdb_find_readelf): New procs. 2013-09-20 21:47:06 +00:00
gnu-ifunc-lib.c
gnu-ifunc.c
gnu-ifunc.exp
grbx.c
hashline1.exp introduce relative_filename and use it 2013-11-04 11:02:08 -07:00
hashline2.exp introduce relative_filename and use it 2013-11-04 11:02:08 -07:00
hashline3.exp introduce relative_filename and use it 2013-11-04 11:02:08 -07:00
hbreak2.exp
hbreak.c
hbreak.exp
help.exp
hook-stop-continue.c
hook-stop-continue.exp
hook-stop-frame.c
hook-stop-frame.exp
huge.c
huge.exp
ifelse.exp
included.c
included.exp
included.h
inferior-died.c
inferior-died.exp
infnan.c
infnan.exp
info-fun-solib.c
info-fun.c
info-fun.exp
info-macros.c
info-macros.exp * lib/gdb.exp (using_fission): New proc. 2013-09-16 23:59:02 +00:00
info-os.c
info-os.exp
info-proc.exp
info-shared-solib1.c
info-shared-solib2.c
info-shared.c
info-shared.exp
info-target.exp
infoline.c
infoline.exp
int-type.c
interact.exp simple changes in gdb.base 2013-11-04 11:02:07 -07:00
interp.c
interp.exp
interrupt-noterm.c
interrupt-noterm.exp
interrupt.c
interrupt.exp
jit-dlmain.c
jit-main.c
jit-simple.c
jit-simple.exp
jit-so.exp simple changes in gdb.base 2013-11-04 11:02:07 -07:00
jit-solib.c
jit.exp simple changes in gdb.base 2013-11-04 11:02:07 -07:00
jump.c
jump.exp
kill-after-signal.c
kill-after-signal.exp
label.c
label.exp
langs0.c
langs1.c
langs1.f
langs2.c
langs2.cxx
langs.exp
ldbl_e308.c
ldbl_e308.exp
lineinc1.h
lineinc2.h
lineinc3.h
lineinc.c
lineinc.exp
linespecs.exp
list0.c
list0.h
list1.c
list.exp simple changes in gdb.base 2013-11-04 11:02:07 -07:00
logical.exp
long_long.c
long_long.exp
longest-types.c
longest-types.exp
longjmp.c
longjmp.exp
m32r.ld
m32rovly.c
macscp1.c
macscp2.h
macscp3.h
macscp4.h
macscp.exp
maint.exp Make the maint.exp:'maint print objfiles' test less fragile. 2013-11-20 17:12:37 +00:00
Makefile.in
memattr.c
memattr.exp
mips_pro.c
mips_pro.exp
miscexprs.c
miscexprs.exp
morestack.c
morestack.exp
moribund-step.exp
multi-forks.c
multi-forks.exp
nextoverexit.c
nextoverexit.exp
nodebug.c
nodebug.exp
nofield.c
nofield.exp
normal.c This patch adds a new convenience variable called "$_exitsignal", which 2013-10-07 05:34:11 +00:00
nostdlib.c
nostdlib.exp
opaque0.c
opaque1.c
opaque.exp
overlays.c
overlays.exp
ovlymgr.c
ovlymgr.h
page.exp
pc-fp.c
pc-fp.exp
pending.c
pending.exp
pendshr.c
permissions.exp
pi.txt
pie-execl.c
pie-execl.exp
pointers.c
pointers.exp
pr10179-a.c
pr10179-b.c
pr10179.exp
pr11022.c
pr11022.exp
prelink-lib.c
prelink.c
prelink.exp simple changes in gdb.base 2013-11-04 11:02:07 -07:00
print-file-var-lib1.c
print-file-var-lib2.c
print-file-var-main.c
print-file-var.exp
printcmds.c * gdb.base/callfuncs.c (main): Assign malloc's return value 2013-11-27 10:39:26 -02:00
printcmds.exp fix for PR gdb/15995 2013-10-17 18:29:28 +00:00
prologue-include.c
prologue-include.exp
prologue-include.h
prologue.c
prologue.exp
psymtab1.c
psymtab2.c
psymtab.exp
ptr-typedef.c
ptr-typedef.exp
ptype1.c
ptype.c
ptype.exp
radix.exp
random-signal.c
random-signal.exp
randomize.c * gdb.base/callfuncs.c (main): Assign malloc's return value 2013-11-27 10:39:26 -02:00
randomize.exp
range-stepping.c
range-stepping.exp
readline-ask.c
readline-ask.exp
readline-ask.inputrc
readline.exp
realname-expand-real.c
realname-expand.c
realname-expand.exp
recpar.c
recpar.exp
recurse.c
recurse.exp
relational.exp
relativedebug.c
relativedebug.exp
relocate.c
relocate.exp
remote.c
remote.exp
remotetimeout.exp
reread1.c
reread2.c
reread.exp
restore.c
restore.exp
return2.c
return2.exp
return-nodebug1.c
return-nodebug.c
return-nodebug.exp
return.c
return.exp
run.c 2013-10-21 Jose E. Marchesi <jose.marchesi@oracle.com> 2013-10-21 12:42:02 +00:00
save-bp.c
save-bp.exp simple changes in gdb.base 2013-11-04 11:02:07 -07:00
savedregs.c
savedregs.exp
scope0.c
scope1.c
scope.exp
sect-cmd.exp
segv.c This patch adds a new convenience variable called "$_exitsignal", which 2013-10-07 05:34:11 +00:00
sep-proc.c
sep.c
sep.exp
sepdebug2.c
sepdebug.c
sepdebug.exp simple changes in gdb.base 2013-11-04 11:02:07 -07:00
sepsymtab.c
sepsymtab.exp
set-lang-auto.exp
set-noassign.exp
setshow.c
setshow.exp Tighten regexp in gdb.base/setshow.exp 2013-11-26 16:36:21 +00:00
setvar.c * gdb.base/callfuncs.c (main): Assign malloc's return value 2013-11-27 10:39:26 -02:00
setvar.exp
shell.exp
shlib-call.exp
shmain.c
shr1.c
shr2.c
shreloc1.c
shreloc2.c
shreloc.c
shreloc.exp gdb/testsuite/ 2013-09-29 14:05:36 +00:00
sigall.c testsuite: handle SIGLOST/SIGPWR conflict in sparc64-*-linux-gnu targets. 2013-12-03 04:34:48 -08:00
sigall.exp testsuite: handle SIGLOST/SIGPWR conflict in sparc64-*-linux-gnu targets. 2013-12-03 04:34:48 -08:00
sigaltstack.c
sigaltstack.exp
sigbpt.c
sigbpt.exp
sigchld.c
sigchld.exp
siginfo-addr.c
siginfo-addr.exp
siginfo-infcall.c
siginfo-infcall.exp
siginfo-obj.c
siginfo-obj.exp
siginfo-thread.c
siginfo-thread.exp
siginfo.c
siginfo.exp
signals.c
signals.exp
signest.c
signest.exp
signull.c
signull.exp
sigrepeat.c
sigrepeat.exp
sigstep.c
sigstep.exp
sizeof.c
sizeof.exp
skip1.c
skip-solib-lib.c
skip-solib-main.c
skip-solib.exp
skip.c
skip.exp
so-disc-shr.c
so-impl-ld.c
so-impl-ld.exp
so-indr-cl.c
so-indr-cl.exp
solib1.c
solib2.c
solib-corrupted.exp
solib-disc.c
solib-disc.exp
solib-display-lib.c
solib-display-main.c
solib-display.exp
solib-nodir.exp
solib-overlap-lib.c
solib-overlap-main.c
solib-overlap.exp
solib-search-lib1.c
solib-search-lib2.c
solib-search.c
solib-search.exp simple changes in gdb.base 2013-11-04 11:02:07 -07:00
solib-search.h
solib-symbol-lib.c
solib-symbol-main.c
solib-symbol.exp
solib-weak.c
solib-weak.exp
solib.c
solib.exp
source-error.gdb
source-nofile.gdb warn if "source" fails to open the file when from_tty == 0 2013-10-11 08:23:11 +00:00
source-test.gdb
source.exp warn if "source" fails to open the file when from_tty == 0 2013-10-11 08:23:11 +00:00
spu.ld
ss.h
stack-checking.c
stack-checking.exp
stale-infcall.c
stale-infcall.exp
stap-probe.c
stap-probe.exp
start.c
start.exp
step-break.c
step-break.exp
step-bt.c
step-bt.exp
step-line.c
step-line.exp simple changes in gdb.base 2013-11-04 11:02:07 -07:00
step-line.inp
step-resume-infcall.c
step-resume-infcall.exp
step-symless.c
step-symless.exp * lib/future.exp (gdb_find_objcopy, gdb_find_readelf): New procs. 2013-09-20 21:47:06 +00:00
step-test.c
step-test.exp
store.c
store.exp
structs2.c
structs2.exp
structs3.c
structs3.exp
structs.c
structs.exp
subst.exp
sum.c
sym-file-lib.c Test adding and removing a symbol file at runtime. 2013-10-29 10:56:45 +01:00
sym-file-loader.c Test adding and removing a symbol file at runtime. 2013-10-29 10:56:45 +01:00
sym-file-loader.h Test adding and removing a symbol file at runtime. 2013-10-29 10:56:45 +01:00
sym-file-main.c Test adding and removing a symbol file at runtime. 2013-10-29 10:56:45 +01:00
sym-file.exp Test adding and removing a symbol file at runtime. 2013-10-29 10:56:45 +01:00
symbol-without-target_section.c
symbol-without-target_section.exp
term.c
term.exp
testenv.c strip off +x bits on non-executable/script files 2013-12-07 02:03:03 -05:00
testenv.exp
trace-commands.exp simple changes in gdb.base 2013-11-04 11:02:07 -07:00
tui-layout.exp
twice.c
twice.exp fix some simple thinkos in the test suite 2013-11-04 10:55:58 -07:00
type-opaque-lib.c
type-opaque-main.c
type-opaque.exp
ui-redirect.exp
unload.c
unload.exp
unloadshr2.c
unloadshr.c
until.exp
unwindonsignal.c
unwindonsignal.exp
valgrind-db-attach.c
valgrind-db-attach.exp
valgrind-infcall.c
valgrind-infcall.exp
value-double-free.c
value-double-free.exp
varargs.c
varargs.exp
vforked-prog.c
volatile.exp
watch_thread_num.c
watch_thread_num.exp
watch-cond-infcall.c
watch-cond-infcall.exp
watch-cond.c
watch-cond.exp
watch-non-mem.c
watch-non-mem.exp
watch-read.c
watch-read.exp
watch-vfork.c
watch-vfork.exp
watchpoint-cond-gone-stripped.c
watchpoint-cond-gone.c
watchpoint-cond-gone.exp
watchpoint-delete.c
watchpoint-delete.exp
watchpoint-hw-hit-once.c
watchpoint-hw-hit-once.exp
watchpoint-hw.c
watchpoint-hw.exp
watchpoint-solib-shr.c
watchpoint-solib.c
watchpoint-solib.exp
watchpoint.c
watchpoint.exp Extra error message from update_watchpoint 2013-10-31 12:52:35 +00:00
watchpoints.c
watchpoints.exp Extra error message from update_watchpoint 2013-10-31 12:52:35 +00:00
wchar.c
wchar.exp
weaklib1.c
weaklib2.c
whatis-exp.exp
whatis.c
whatis.exp