Add a gdb.trace test for instruction relocation
authorPierre Langlois <pierre.langlois@arm.com>
Mon, 21 Sep 2015 14:01:05 +0000 (15:01 +0100)
committerYao Qi <yao.qi@linaro.org>
Mon, 21 Sep 2015 14:01:05 +0000 (15:01 +0100)
commit4f51c22aca0d53526e65954b99d1ab3abfbb8bc8
tree375046bfd173a633f320d51c668563df5bb6ee66
parent7041adf41fc291659fa4d102b50539946403f97e
Add a gdb.trace test for instruction relocation

This test case makes sure that relocating PC relative instructions does
not change their behaviors.  All PC relative AArch64 instructions are
covered.  While call and jump (32 bit relative) instructions are covered
on x86.

The test case creates a static array of function pointers for each
supported architecture.  Each function in this array tests a specific
instruction using inline assembly.  They all need to contain a symbol in
the form of 'set_point\[0-9\]+' and finish by either calling pass or
fail.  The number of 'set_pointN' needs to go from 0 to
(ARRAY_SIZE - 1).

The test will:
- look up the number of function pointers in the static array.
- set fast tracepoints on each 'set_point\[0-9\]+' symbol, one in each
  functions from 0 to (ARRAY_SIZE - 1).
- run the trace experiment and make sure the pass function is called for
  every function.

gdb/testsuite/ChangeLog:

* gdb.arch/insn-reloc.c: New file.
* gdb.arch/ftrace-insn-reloc.exp: New file.
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.arch/ftrace-insn-reloc.exp [new file with mode: 0644]
gdb/testsuite/gdb.arch/insn-reloc.c [new file with mode: 0644]