old-cross-binutils/gdb/testsuite/gdb.arch
Sergio Durigan Junior f7088df3b1 Explicitly use language_c when evaluating a SDT probe argument
Joel contacted me offlist with a question about a warning that one of
his customers was seeing.  The message came from the new
linker-debugger interface, which uses SDT probes internally.  The
warning said:

    (gdb) run
    [...]
    warning: Probes-based dynamic linker interface failed.
    Reverting to original interface.

    Argument to arithmetic operation not a number or boolean.

This should not have happened in the environment the customer was
using (RHEL-6.x), so I found it strange.  Another thing caught my
attention: the last message, saying "Argument to arithmetic operation
not a number or boolean.".

Joel kindly investigated the issue further, and found the answer for
this.  To quote him:

	(gdb) set lang c
	(gdb) p 48+$ebp
	$4 = (void *) 0xffffd0f8

    So far so good. But...

	(gdb) set lang ada
	(gdb) p 48+$ebp
	Argument to arithmetic operation not a number or boolean.

    Ooops! Interestingly, if you revert the order of the operands...

	(gdb) p $ebp+48
	$5 = (access void) 0xffffd0f8

So the problem is doing pointer arithmetics when the language is set
to Ada.

I remembered that, during the parsing and the evaluation of SDT probe
arguments, the code sets the language as current_language, because, at
that time, I thought it was not necessary to worry about the language
given that the code implements its own parser.  I was wrong.  So here
is a patch to fix that, by setting the language as C, which should
guarantee that the maths are done in the right way (TM).

It was somewhat hard to find a reproducer for this issue.  In the end,
what I had to do was to create a testcase that used the %ebp register
on some displacement (e.g., "-4(%ebp)"), which finally triggered the
bug.  I am not sure why I could not trigger it when using other
registers, but I did not want to spend too much time investigating
this issue, which seemed like an Ada issue.  Also, because of this
peculiar way to trigger the problem, the testcase only covers x86-like
targets (i.e., i*86 and x86_64 with -m32).

Joel kindly tested this for me, and it worked.  I also ran a full
regression test here on my Fedora 20 x86_64, and everything is fine.

I will push this patch in a few days if there are no comments.

gdb/ChangeLog:
2014-10-14  Sergio Durigan Junior  <sergiodj@redhat.com>

	* stap-probe.c (stap_parse_argument): Initialize expout explicitly
	using language_c, instead of current_language.

gdb/testsuite/ChangeLog:
2014-10-14  Sergio Durigan Junior  <sergiodj@redhat.com>

	* gdb.arch/stap-eval-lang-ada.S: Likewise.
	* gdb.arch/stap-eval-lang-ada.c: Likewise.
	* gdb.arch/stap-eval-lang-ada.exp: New file.
2014-10-14 14:33:31 -04:00
..
aarch64-atomic-inst.c aarch64: detect atomic sequences like other ll/sc architectures 2014-05-07 09:41:50 -07:00
aarch64-atomic-inst.exp aarch64: detect atomic sequences like other ll/sc architectures 2014-05-07 09:41:50 -07:00
alpha-step.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
alpha-step.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
altivec-abi.c
altivec-abi.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
altivec-regs.c
altivec-regs.exp PowerPC64 little-endian fixes: AltiVec tests 2014-02-04 18:28:24 +01:00
amd64-byte.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-disp-step.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-disp-step.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-dword.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-entry-value-inline.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-entry-value-inline.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-entry-value-inline.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-entry-value-param.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-entry-value-param.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-entry-value-param.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-entry-value-paramref.cc Fix read_frame_arg for optimized-out entry values. 2014-07-22 22:09:35 +02:00
amd64-entry-value-paramref.exp Fix read_frame_arg for optimized-out entry values. 2014-07-22 22:09:35 +02:00
amd64-entry-value-paramref.S Fix read_frame_arg for optimized-out entry values. 2014-07-22 22:09:35 +02:00
amd64-entry-value.cc Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-entry-value.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-entry-value.s Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-i386-address.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-i386-address.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-invalid-stack-middle.c Remove previous frame if an error occurs when computing frame id during unwind. 2014-05-30 22:36:14 +01:00
amd64-invalid-stack-middle.exp Add a TRY_CATCH to get_prev_frame_always to better manage errors during unwind. 2014-05-30 22:44:36 +01:00
amd64-invalid-stack-middle.S Remove previous frame if an error occurs when computing frame id during unwind. 2014-05-30 22:36:14 +01:00
amd64-invalid-stack-top.c Remove previous frame if an error occurs when computing frame id during unwind. 2014-05-30 22:36:14 +01:00
amd64-invalid-stack-top.exp Add a TRY_CATCH to get_prev_frame_always to better manage errors during unwind. 2014-05-30 22:44:36 +01:00
amd64-optimout-repeat.c Fix read_frame_arg for optimized-out entry values. 2014-07-22 22:09:35 +02:00
amd64-optimout-repeat.exp Fix read_frame_arg for optimized-out entry values. 2014-07-22 22:09:35 +02:00
amd64-optimout-repeat.S Fix read_frame_arg for optimized-out entry values. 2014-07-22 22:09:35 +02:00
amd64-prologue-xmm.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-prologue-xmm.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-prologue-xmm.s Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-pseudo.c Rewrite {amd64,i386}-pseudo.c to better specify register liveness. 2014-08-28 11:38:22 -07:00
amd64-stap-optional-prefix.exp testsuite: Use istarget and is_lp64_target for 3 testcases. 2014-06-23 08:24:36 +02:00
amd64-stap-optional-prefix.S Extend recognized types of SDT probe's arguments 2014-05-02 17:50:45 -03:00
amd64-stap-special-operands.exp testsuite: Use istarget and is_lp64_target for 3 testcases. 2014-06-23 08:24:36 +02:00
amd64-stap-three-arg-disp.c Fix for PR tdep/16397: SystemTap SDT probe support for x86 doesn't work with "triplet operands" 2014-02-20 18:49:09 -03:00
amd64-stap-three-arg-disp.S Fix for PR tdep/16397: SystemTap SDT probe support for x86 doesn't work with "triplet operands" 2014-02-20 18:49:09 -03:00
amd64-stap-triplet.c Fix for PR tdep/16397: SystemTap SDT probe support for x86 doesn't work with "triplet operands" 2014-02-20 18:49:09 -03:00
amd64-stap-triplet.S Fix for PR tdep/16397: SystemTap SDT probe support for x86 doesn't work with "triplet operands" 2014-02-20 18:49:09 -03:00
amd64-stap-wrong-subexp.exp Fix for PR gdb/17235: possible bug extracting systemtap probe operand 2014-09-05 15:21:44 -04:00
amd64-stap-wrong-subexp.S Fix for PR gdb/17235: possible bug extracting systemtap probe operand 2014-09-05 15:21:44 -04:00
amd64-tailcall-cxx.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-tailcall-cxx1.cc Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-tailcall-cxx1.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-tailcall-cxx2.cc Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-tailcall-cxx2.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-tailcall-noret.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-tailcall-noret.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-tailcall-noret.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-tailcall-ret.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-tailcall-ret.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-tailcall-ret.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
amd64-word.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
arm-bl-branch-dest.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
arm-bl-branch-dest.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
arm-disp-step.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
arm-disp-step.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
avr-flash-qualifier.c Add support for the __flash qualifier on AVR 2014-07-15 17:03:09 +01:00
avr-flash-qualifier.exp Add support for the __flash qualifier on AVR 2014-07-15 17:03:09 +01:00
e500-abi.c
e500-abi.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
e500-prologue.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
e500-prologue.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
e500-regs.c
e500-regs.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
gdb1291.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
gdb1291.s Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
gdb1431.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
gdb1431.s Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
gdb1558.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
gdb1558.exp after gdb_run_cmd, gdb_expect -> gdb_test_multiple/gdb_test 2014-09-12 22:16:31 +01:00
i386-avx.c Rename 32- and 64-bit Intel files from "i386" to "x86" 2014-09-02 16:54:08 +01:00
i386-avx.exp Move shared native target specific code to gdb/nat 2014-06-20 14:06:48 +01:00
i386-avx512.c Rename 32- and 64-bit Intel files from "i386" to "x86" 2014-09-02 16:54:08 +01:00
i386-avx512.exp Add AVX512 registers support to GDB and GDBserver. 2014-04-24 16:30:03 +02:00
i386-bp_permanent.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-byte.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-cfi-notcurrent.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-cfi-notcurrent.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-disp-step.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-disp-step.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-dr3-watch.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-dr3-watch.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-float.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-float.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-gnu-cfi-asm.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-gnu-cfi.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-gnu-cfi.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-mpx.c Rename 32- and 64-bit Intel files from "i386" to "x86" 2014-09-02 16:54:08 +01:00
i386-mpx.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-permbkpt.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-permbkpt.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-prologue.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-prologue.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-pseudo.c Rewrite {amd64,i386}-pseudo.c to better specify register liveness. 2014-08-28 11:38:22 -07:00
i386-signal.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-signal.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-size-overlap.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-size-overlap.exp after gdb_run_cmd, gdb_expect -> gdb_test_multiple/gdb_test 2014-09-12 22:16:31 +01:00
i386-size.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-size.exp after gdb_run_cmd, gdb_expect -> gdb_test_multiple/gdb_test 2014-09-12 22:16:31 +01:00
i386-sse-stack-align.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-sse-stack-align.exp Fix i386-sse-stack-align.exp regression since GDB_PARALLEL. 2014-02-06 23:14:20 +01:00
i386-sse-stack-align.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-sse.c Rename 32- and 64-bit Intel files from "i386" to "x86" 2014-09-02 16:54:08 +01:00
i386-sse.exp Move shared native target specific code to gdb/nat 2014-06-20 14:06:48 +01:00
i386-stap-eval-lang-ada.c Explicitly use language_c when evaluating a SDT probe argument 2014-10-14 14:33:31 -04:00
i386-stap-eval-lang-ada.exp Explicitly use language_c when evaluating a SDT probe argument 2014-10-14 14:33:31 -04:00
i386-stap-eval-lang-ada.S Explicitly use language_c when evaluating a SDT probe argument 2014-10-14 14:33:31 -04:00
i386-unwind.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
i386-unwind.exp after gdb_run_cmd, gdb_expect -> gdb_test_multiple/gdb_test 2014-09-12 22:16:31 +01:00
i386-word.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
ia64-breakpoint-shadow.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
ia64-breakpoint-shadow.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
iwmmxt-regs.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
iwmmxt-regs.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
Makefile.in Add AVX512 registers support to GDB and GDBserver. 2014-04-24 16:30:03 +02:00
mips-octeon-bbit.c
mips-octeon-bbit.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
mips16-thunks-inmain.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
mips16-thunks-main.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
mips16-thunks-sin.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
mips16-thunks-sinfrob.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
mips16-thunks-sinfrob16.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
mips16-thunks-sinmain.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
mips16-thunks-sinmips16.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
mips16-thunks.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
pa-nullify.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
pa-nullify.s
pa64-nullify.s
powerpc-aix-prologue.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
powerpc-aix-prologue.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
powerpc-d128-regs.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
powerpc-d128-regs.exp PowerPC64 little-endian fixes: 128-bit DFP parameters / registers 2014-02-04 18:36:54 +01:00
powerpc-power.exp gdb/testsuite/ 2014-06-02 13:57:27 -03:00
powerpc-power.s gdb/testsuite/ 2014-06-02 13:57:27 -03:00
powerpc-prologue.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
powerpc-prologue.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
powerpc-stackless.exp PR tdep/17379: Fix internal-error when stack pointer is invalid. 2014-09-12 09:20:25 -03:00
powerpc-stackless.S PR tdep/17379: Fix internal-error when stack pointer is invalid. 2014-09-12 09:20:25 -03:00
ppc-dfp.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
ppc-dfp.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
ppc-fp.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
ppc-fp.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
ppc64-atomic-inst.exp gdb.arch/ppc64-atomic-inst.exp: Improve error handling. 2014-04-01 12:12:59 +11:00
ppc64-atomic-inst.S Fix ppc64 single step over atomic sequence testcase. 2014-04-01 12:12:48 +11:00
s390-multiarch.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
s390-multiarch.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
s390-tdbregs.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
s390-tdbregs.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
sparc-sysstep.c This changeset makes sparc64_linux_step_trap to return 0 when a 2014-01-29 07:15:05 -08:00
sparc-sysstep.exp This changeset makes sparc64_linux_step_trap to return 0 when a 2014-01-29 07:15:05 -08:00
spu-info.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
spu-info.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
spu-ls.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
spu-ls.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
thumb-bx-pc.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
thumb-bx-pc.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
thumb-prologue.c Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
thumb-prologue.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
thumb-singlestep.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
thumb-singlestep.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
thumb2-it.exp Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
thumb2-it.S Update Copyright year range in all files maintained by GDB. 2014-01-01 07:54:24 +04:00
vsx-regs.c
vsx-regs.exp PowerPC64 little-endian fixes: VSX tests and pseudo-regs 2014-02-04 18:31:38 +01:00