History log of /arch/arm/kernel/kprobes-test.c
Revision Date Author Comments
ad684dce87fac52738649e62b4afa25081b52a28 30-Sep-2014 Jon Medhurst <tixy@linaro.org> ARM: 8179/1: kprobes-test: Fix compile error "bad immediate value for offset"

When compiling kprobes-test-arm.c the following error has been observed

/tmp/ccoT403o.s:21439: Error: bad immediate value for offset (4168)

This is caused by the compiler spilling it's literal pool too far away
from the site which is trying to reference it with a PC relative load.
This arises because the compiler is underestimating the size of the
inline assembler code present, which apparently it approximates as 4
bytes per line or instruction.

We fix this problem by moving the operations which generate more than
4 bytes out of the text section. Specifically, moving the .ascii
directives to the .rodata section.

Signed-off-by: Jon Medhurst <tixy@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
48f7bc86b6e75bcb71441c77378c1cde6ecbe475 23-Jan-2014 Jon Medhurst <tixy@linaro.org> ARM: kprobes: Prevent known test failures stopping other tests running

Due to a long-standing issue with Thumb symbol lookup [1] the jprobes
tests fail when built into a kernel compiled as Thumb mode. (They work
fine for ARM mode kernels or for Thumb when built as a loadable module.)

Rather than have this problem terminate testing prematurely lets instead
emit an error message and carry on with the main kprobes tests, delaying
the final failure report until the end.

[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2011-August/063026.html

Signed-off-by: Jon Medhurst <tixy@linaro.org>
41b5368f31f86a1c2be2bb16a1cf18d23f1223d4 08-Nov-2013 Taras Kondratiuk <taras.kondratiuk@linaro.org> ARM: kprobes-test: Workaround GAS .align bug

By default if no fill symbol is given to .align directive in a code
section it fills gap with NOPs. If previous fragment is not
instruction-aligned, additional pre-alignment is done by zero bytes
before NOPs. These zero bytes are marked as data by special symbol $d in
symbol table. Unfortunately GAS assumes that there is only code in the
code section so it "puts back" code symbol $a at the end of this
pre-alignment. So if there is some data after alignment it will be
interpreted as code and will be swapped back to LE for BE8 system during
a final linking.

If explicit fill value is given to .align, the NOP-padding code is
skipped and symbol table does not get messed-up.

So the workaround for this issue:
Use explicit fill value if data should be aligned in the code section.

Acked-by: Ben Dooks <ben.dooks@codethink.co.uk>
Acked-by: Jon Medhurst <tixy@linaro.org>
Signed-off-by: Taras Kondratiuk <taras.kondratiuk@linaro.org>
4712e17aa4b3c348cd0c7afc6370551a9193b65f 08-Nov-2013 Ben Dooks <ben.dooks@codethink.co.uk> ARM: kprobes-test: use <asm/opcodes.h> for instruction accesses

Ensure we read instructions in the correct endian-ness by using
the <asm/opcodes.h> helper to transform them as necessary.

Acked-by: Jon Medhurst <tixy@linaro.org>
Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
[taras.kondratiuk@linaro.org: fix next_instruction() function]
Signed-off-by: Taras Kondratiuk <taras.kondratiuk@linaro.org>
47e190fafde49ff8ca732fa137e39cb2b8baba8c 07-Mar-2014 David A. Long <dave.long@linaro.org> ARM: Change the remaining shared kprobes/uprobes symbols to something generic

Any more ARM kprobes/uprobes symbols which have "kprobe" in the name must be
changed to the more generic "probes" or other non-kprobes specific symbol.

Signed-off-by: David A. Long <dave.long@linaro.org>
Acked-by: Jon Medhurst <tixy@linaro.org>
21254ebc9e509967317ad8c6922797e21137ad53 07-Mar-2014 David A. Long <dave.long@linaro.org> ARM: Fix missing includes in kprobes sources

Make sure includes in ARM kprobes sources are done explicitly. Do not
rely on includes from other includes.

Signed-off-by: David A. Long <dave.long@linaro.org>
Acked-by: Jon Medhurst <tixy@linaro.org>
744627e91c3c272e4c9f866ee61808f4206a9450 05-Nov-2012 Masanari Iida <standby24x7@gmail.com> treewide: fix printk typo in multiple drivers

Correct spelling typo in multiple drivers.

Signed-off-by: Masanari Iida <standby24x7@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
c41584ddc1b9c7d06726057456d188d4eefec60b 12-Dec-2011 Leif Lindholm <leif.lindholm@arm.com> ARM: 7209/1: Use generic ARM instruction set condition code checks for kprobes.

This patch changes the kprobes implementation to use the generic ARM
instruction set condition code checks, rather than a dedicated
implementation.

Signed-off-by: Leif Lindholm <leif.lindholm@arm.com>
Acked-by: Jon Medhurst <tixy@yxit.co.uk>
Reviewed-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
08aab447c56a5388cf0c768da476ad022f00fef8 28-Aug-2011 Jon Medhurst <tixy@yxit.co.uk> ARM: kprobes: Add introductory comment to test code

Signed-off-by: Jon Medhurst <tixy@yxit.co.uk>
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
ce5af3bad0e03e94d01c002698ca6b2697b51836 28-Aug-2011 Jon Medhurst <tixy@yxit.co.uk> ARM: kprobes: Add some benchmarking to test module

These benchmarks show the basic speed of kprobes and verify the success
of optimisations done to the emulation of typical function entry
instructions (i.e. push/stmdb).

Signed-off-by: Jon Medhurst <tixy@yxit.co.uk>
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
963780dfe390e80e148eb84f0c84a01533a64d28 28-Aug-2011 Jon Medhurst <tixy@yxit.co.uk> ARM: kprobes: Add decoding table test coverage analysis

This is used to verify that all combinations of CPU instructions
described by the kprobes decoding tables have a test case.

Signed-off-by: Jon Medhurst <tixy@yxit.co.uk>
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
68f360e753668b61366b7b4b2a5aa77ac5157c37 28-Aug-2011 Jon Medhurst <tixy@yxit.co.uk> ARM: kprobes: Add decoding table self-consistency tests

These check that the bitmask and match value used in the decoding tables
are self consistent.

Signed-off-by: Jon Medhurst <tixy@yxit.co.uk>
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
c0cc6df16394da020242a54d577848f9edd9dc50 27-Aug-2011 Jon Medhurst <tixy@yxit.co.uk> ARM: kprobes: Add ARM instruction simulation test cases

Signed-off-by: Jon Medhurst <tixy@yxit.co.uk>
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
c7054aad538c18bc4c311e74a24cb2e205f02e04 27-Aug-2011 Jon Medhurst <tixy@yxit.co.uk> ARM: kprobes: Add Thumb instruction simulation test cases

Signed-off-by: Jon Medhurst <tixy@yxit.co.uk>
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
a43bc69b39484a448293f2eddc7e98ff15437414 28-Aug-2011 Jon Medhurst <tixy@yxit.co.uk> ARM: kprobes: Framework for instruction set test cases

On ARM we have to simulate/emulate CPU instructions in order to
singlestep them. This patch adds a framework which can be used to
construct test cases for different instruction forms. It is described in
detail in the in-source comments of kprobes-test.c

Signed-off-by: Jon Medhurst <tixy@yxit.co.uk>
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
9eed1797720ae633cf17b03dd804d8744f1d3b5c 28-Aug-2011 Jon Medhurst <tixy@yxit.co.uk> ARM: kprobes: Add basic API tests

These test that the different kinds of probes can be successfully placed
into ARM and Thumb code and that the handlers are called correctly when
this code is executed.

Signed-off-by: Jon Medhurst <tixy@yxit.co.uk>
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>