ARM: kprobes: Add test cases for stack consuming instructions
These have extra 'checker' functions associated with them so lets make sure those get covered by testing. As they may create uninitialised space on the stack we also update the test code to ensure such space is consistent between test runs. This is done by disabling interrupts in setup_test_context(). Signed-off-by: Jon Medhurst <tixy@linaro.org>
This commit is contained in:

committed by
Jon Medhurst

parent
a0266c214f
commit
8d257e95a9
@@ -12,6 +12,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <asm/system_info.h>
|
||||
#include <asm/opcodes.h>
|
||||
#include <asm/probes.h>
|
||||
|
||||
#include "test-core.h"
|
||||
|
||||
@@ -478,6 +479,7 @@ void kprobe_arm_test_cases(void)
|
||||
TEST_RPR( "strh r",0, VAL1,", [r",1, 48,", -r",2, 24,"]")
|
||||
TEST_RPR( "streqh r",14,VAL2,", [r",11,0, ", r",12, 48,"]")
|
||||
TEST_UNSUPPORTED( "streqh r14, [r13, r12]")
|
||||
TEST_UNSUPPORTED( "streqh r14, [r12, r13]")
|
||||
TEST_RPR( "strh r",1, VAL1,", [r",2, 24,", r",3, 48,"]!")
|
||||
TEST_RPR( "strneh r",12,VAL2,", [r",11,48,", -r",10,24,"]!")
|
||||
TEST_RPR( "strh r",2, VAL1,", [r",3, 24,"], r",4, 48,"")
|
||||
@@ -502,6 +504,9 @@ void kprobe_arm_test_cases(void)
|
||||
TEST_RP( "strplh r",12,VAL2,", [r",11,24,", #-4]!")
|
||||
TEST_RP( "strh r",2, VAL1,", [r",3, 24,"], #48")
|
||||
TEST_RP( "strh r",10,VAL2,", [r",9, 64,"], #-48")
|
||||
TEST_RP( "strh r",3, VAL1,", [r",13,TEST_MEMORY_SIZE,", #-"__stringify(MAX_STACK_SIZE)"]!")
|
||||
TEST_UNSUPPORTED("strh r3, [r13, #-"__stringify(MAX_STACK_SIZE)"-8]!")
|
||||
TEST_RP( "strh r",4, VAL1,", [r",14,TEST_MEMORY_SIZE,", #-"__stringify(MAX_STACK_SIZE)"-8]!")
|
||||
TEST_UNSUPPORTED(__inst_arm(0xe1efc3b0) " @ strh r12, [pc, #48]!")
|
||||
TEST_UNSUPPORTED(__inst_arm(0xe0c9f3b0) " @ strh pc, [r9], #48")
|
||||
|
||||
@@ -568,6 +573,7 @@ void kprobe_arm_test_cases(void)
|
||||
TEST_RPR( "strd r",0, VAL1,", [r",1, 48,", -r",2,24,"]")
|
||||
TEST_RPR( "strccd r",8, VAL2,", [r",11,0, ", r",12,48,"]")
|
||||
TEST_UNSUPPORTED( "strccd r8, [r13, r12]")
|
||||
TEST_UNSUPPORTED( "strccd r8, [r12, r13]")
|
||||
TEST_RPR( "strd r",4, VAL1,", [r",2, 24,", r",3, 48,"]!")
|
||||
TEST_RPR( "strcsd r",12,VAL2,", [r",11,48,", -r",10,24,"]!")
|
||||
TEST_RPR( "strd r",2, VAL1,", [r",5, 24,"], r",4,48,"")
|
||||
@@ -591,6 +597,9 @@ void kprobe_arm_test_cases(void)
|
||||
TEST_RP( "strvcd r",12,VAL2,", [r",11,24,", #-16]!")
|
||||
TEST_RP( "strd r",2, VAL1,", [r",4, 24,"], #48")
|
||||
TEST_RP( "strd r",10,VAL2,", [r",9, 64,"], #-48")
|
||||
TEST_RP( "strd r",6, VAL1,", [r",13,TEST_MEMORY_SIZE,", #-"__stringify(MAX_STACK_SIZE)"]!")
|
||||
TEST_UNSUPPORTED("strd r6, [r13, #-"__stringify(MAX_STACK_SIZE)"-8]!")
|
||||
TEST_RP( "strd r",4, VAL1,", [r",12,TEST_MEMORY_SIZE,", #-"__stringify(MAX_STACK_SIZE)"-8]!")
|
||||
TEST_UNSUPPORTED(__inst_arm(0xe1efc3f0) " @ strd r12, [pc, #48]!")
|
||||
|
||||
TEST_P( "ldrd r0, [r",0, 24,", #-8]")
|
||||
@@ -639,16 +648,20 @@ void kprobe_arm_test_cases(void)
|
||||
TEST_RP( "str"byte" r",12,VAL2,", [r",11,24,", #-4]!") \
|
||||
TEST_RP( "str"byte" r",2, VAL1,", [r",3, 24,"], #48") \
|
||||
TEST_RP( "str"byte" r",10,VAL2,", [r",9, 64,"], #-48") \
|
||||
TEST_RP( "str"byte" r",3, VAL1,", [r",13,TEST_MEMORY_SIZE,", #-"__stringify(MAX_STACK_SIZE)"]!") \
|
||||
TEST_UNSUPPORTED("str"byte" r3, [r13, #-"__stringify(MAX_STACK_SIZE)"-8]!") \
|
||||
TEST_RP( "str"byte" r",4, VAL1,", [r",10,TEST_MEMORY_SIZE,", #-"__stringify(MAX_STACK_SIZE)"-8]!") \
|
||||
TEST_RPR("str"byte" r",0, VAL1,", [r",1, 48,", -r",2, 24,"]") \
|
||||
TEST_RPR("str"byte" r",14,VAL2,", [r",11,0, ", r",12, 48,"]") \
|
||||
TEST_UNSUPPORTED("str"byte" r14, [r13, r12]") \
|
||||
TEST_UNSUPPORTED("str"byte" r14, [r13, r12]") \
|
||||
TEST_UNSUPPORTED("str"byte" r14, [r12, r13]") \
|
||||
TEST_RPR("str"byte" r",1, VAL1,", [r",2, 24,", r",3, 48,"]!") \
|
||||
TEST_RPR("str"byte" r",12,VAL2,", [r",11,48,", -r",10,24,"]!") \
|
||||
TEST_RPR("str"byte" r",2, VAL1,", [r",3, 24,"], r",4, 48,"") \
|
||||
TEST_RPR("str"byte" r",10,VAL2,", [r",9, 48,"], -r",11,24,"") \
|
||||
TEST_RPR("str"byte" r",0, VAL1,", [r",1, 24,", r",2, 32,", asl #1]")\
|
||||
TEST_RPR("str"byte" r",14,VAL2,", [r",11,0, ", r",12, 32,", lsr #2]")\
|
||||
TEST_UNSUPPORTED("str"byte" r14, [r13, r12, lsr #2]")\
|
||||
TEST_UNSUPPORTED("str"byte" r14, [r13, r12, lsr #2]") \
|
||||
TEST_RPR("str"byte" r",1, VAL1,", [r",2, 24,", r",3, 32,", asr #3]!")\
|
||||
TEST_RPR("str"byte" r",12,VAL2,", [r",11,24,", r",10, 4,", ror #31]!")\
|
||||
TEST_P( "ldr"byte" r0, [r",0, 24,", #-2]") \
|
||||
|
Reference in New Issue
Block a user