mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-28 20:44:26 +01:00
userland: scope every header identifier with lkmc_
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
|
||||
#include "common.h"
|
||||
|
||||
ENTRY
|
||||
LKMC_ENTRY
|
||||
mov $1, %rax
|
||||
add $2, %rax
|
||||
ASSERT_EQ(%rax, $3)
|
||||
EXIT
|
||||
LKMC_ASSERT_EQ(%rax, $3)
|
||||
LKMC_EXIT
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
#include "common.h"
|
||||
|
||||
ENTRY
|
||||
LKMC_ENTRY
|
||||
.bss
|
||||
output: .skip 16
|
||||
.data
|
||||
@@ -21,11 +21,11 @@ ENTRY
|
||||
movups addp ## size ## _input1, %xmm1; \
|
||||
addp ## size %xmm1, %xmm0; \
|
||||
movups %xmm0, output; \
|
||||
ASSERT_MEMCMP(output, addp ## size ## _expect, $0x10)
|
||||
LKMC_ASSERT_MEMCMP(output, addp ## size ## _expect, $0x10)
|
||||
|
||||
/* 4x 32-bit */
|
||||
TEST(s)
|
||||
/* 2x 64-bit */
|
||||
TEST(d)
|
||||
#undef TEST
|
||||
EXIT
|
||||
LKMC_EXIT
|
||||
|
||||
@@ -5,32 +5,32 @@
|
||||
|
||||
/* This and other macros may make C function calls, and therefore can destroy
|
||||
* non-callee saved registers. */
|
||||
#define ASSERT_EQ(general1, general2) \
|
||||
#define LKMC_ASSERT_EQ(general1, general2) \
|
||||
mov general2, %rdi; \
|
||||
push %rdi; \
|
||||
mov general1, %rdi; \
|
||||
pop %rsi; \
|
||||
ASSERT_EQ_DO(64); \
|
||||
LKMC_ASSERT_EQ_DO(64); \
|
||||
;
|
||||
|
||||
#define ASSERT_EQ_DO(bits) \
|
||||
call assert_eq_ ## bits; \
|
||||
#define LKMC_ASSERT_EQ_DO(bits) \
|
||||
call lkmc_assert_eq_ ## bits; \
|
||||
cmp $0, %rax; \
|
||||
ASSERT(je); \
|
||||
LKMC_ASSERT(je); \
|
||||
;
|
||||
|
||||
#define ASSERT_MEMCMP(label1, label2, const_size) \
|
||||
#define LKMC_ASSERT_MEMCMP(label1, label2, const_size) \
|
||||
lea label1(%rip), %rdi; \
|
||||
lea label2(%rip), %rsi; \
|
||||
mov const_size, %rdx; \
|
||||
call assert_memcmp; \
|
||||
call lkmc_assert_memcmp; \
|
||||
cmp $0, %rax; \
|
||||
ASSERT(je); \
|
||||
LKMC_ASSERT(je); \
|
||||
;
|
||||
|
||||
/* Program entry point.
|
||||
*
|
||||
* Return with EXIT.
|
||||
* Return with LKMC_EXIT.
|
||||
*
|
||||
* Basically implements an x86_64 prologue:
|
||||
*
|
||||
@@ -38,7 +38,7 @@
|
||||
* x86_64 explained at: https://stackoverflow.com/questions/18024672/what-registers-are-preserved-through-a-linux-x86-64-function-call/55207335#55207335
|
||||
* - save register arguments for later usage
|
||||
*/
|
||||
#define ENTRY \
|
||||
#define LKMC_ENTRY \
|
||||
.text; \
|
||||
.global asm_main; \
|
||||
asm_main: \
|
||||
@@ -54,13 +54,13 @@ asm_main: \
|
||||
asm_main_after_prologue: \
|
||||
;
|
||||
|
||||
/* Meant to be called at the end of ENTRY.*
|
||||
/* Meant to be called at the end of LKMC_ENTRY.*
|
||||
*
|
||||
* Branching to "fail" makes tests fail with exit status 1.
|
||||
*
|
||||
* If EXIT is reached, the program ends successfully.
|
||||
* If LKMC_EXIT is reached, the program ends successfully.
|
||||
*/
|
||||
#define EXIT \
|
||||
#define LKMC_EXIT \
|
||||
mov $0, %rax; \
|
||||
jmp pass; \
|
||||
fail: \
|
||||
@@ -79,7 +79,7 @@ pass: \
|
||||
ret; \
|
||||
;
|
||||
|
||||
#define FAIL \
|
||||
#define LKMC_FAIL \
|
||||
mov $__LINE__, %eax; \
|
||||
jmp fail; \
|
||||
;
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
#include "common.h"
|
||||
|
||||
ENTRY
|
||||
LKMC_ENTRY
|
||||
#define ASSERT_DIFF(label1, label2, result) \
|
||||
lea label2(%rip), %rax; \
|
||||
lea label1(%rip), %rbx; \
|
||||
sub %rbx, %rax; \
|
||||
ASSERT_EQ(%rax, $result)
|
||||
LKMC_ASSERT_EQ(%rax, $result)
|
||||
|
||||
ASSERT_DIFF(mybyte, myword, 1)
|
||||
ASSERT_DIFF(myword, mylong, 2)
|
||||
@@ -15,7 +15,7 @@ ENTRY
|
||||
ASSERT_DIFF(myquad, myocta, 8)
|
||||
ASSERT_DIFF(myocta, theend, 16)
|
||||
#undef ASSERT_DIF
|
||||
EXIT
|
||||
LKMC_EXIT
|
||||
mybyte:
|
||||
.byte 0x12
|
||||
myword:
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
|
||||
#include "common.h"
|
||||
|
||||
ENTRY
|
||||
LKMC_ENTRY
|
||||
mov $0x123456789ABCDEF0, %r12
|
||||
mov $0x123456789ABCDEF0, %r13
|
||||
ASSERT_EQ(%r12, $0x123456789ABCDEF0)
|
||||
ASSERT_EQ(%r12, %r13)
|
||||
ASSERT_EQ(%r12, myvar)
|
||||
ASSERT_EQ($0x123456789ABCDEF0, %r12)
|
||||
ASSERT_EQ(%r13, %r12)
|
||||
ASSERT_EQ(myvar, %r12)
|
||||
ASSERT_EQ(%r12, $0x123456789ABCDEF1)
|
||||
EXIT
|
||||
LKMC_ASSERT_EQ(%r12, $0x123456789ABCDEF0)
|
||||
LKMC_ASSERT_EQ(%r12, %r13)
|
||||
LKMC_ASSERT_EQ(%r12, myvar)
|
||||
LKMC_ASSERT_EQ($0x123456789ABCDEF0, %r12)
|
||||
LKMC_ASSERT_EQ(%r13, %r12)
|
||||
LKMC_ASSERT_EQ(myvar, %r12)
|
||||
LKMC_ASSERT_EQ(%r12, $0x123456789ABCDEF1)
|
||||
LKMC_EXIT
|
||||
myvar: .quad 0x123456789ABCDEF0
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
|
||||
#include "common.h"
|
||||
|
||||
ENTRY
|
||||
ASSERT_MEMCMP(var0, var1, $0x10)
|
||||
ASSERT_MEMCMP(var0, var2, $0x10)
|
||||
EXIT
|
||||
LKMC_ENTRY
|
||||
LKMC_ASSERT_MEMCMP(var0, var1, $0x10)
|
||||
LKMC_ASSERT_MEMCMP(var0, var2, $0x10)
|
||||
LKMC_EXIT
|
||||
var0: .long 0x11111111, 0x22222222, 0x33333333, 0x44444444
|
||||
var1: .long 0x11111111, 0x22222222, 0x33333333, 0x44444444
|
||||
var2: .long 0x11111111, 0x22222223, 0x23333333, 0x44444444
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
#include "common.h"
|
||||
|
||||
ENTRY
|
||||
LKMC_ENTRY
|
||||
.data
|
||||
input0: .long 0xF1F1F1F1, 0xF2F2F2F2, 0xF3F3F3F3, 0xF4F4F4F4
|
||||
input1: .long 0x12121212, 0x13131313, 0x14141414, 0x15151515
|
||||
@@ -23,7 +23,7 @@ ENTRY
|
||||
movups input0, %xmm0; \
|
||||
padd ## size %xmm1, %xmm0; \
|
||||
movups %xmm0, output; \
|
||||
ASSERT_MEMCMP(output, padd ## size ## _expect, $0x10)
|
||||
LKMC_ASSERT_MEMCMP(output, padd ## size ## _expect, $0x10)
|
||||
|
||||
/* 16x 8-bit */
|
||||
TEST(b)
|
||||
@@ -35,4 +35,4 @@ ENTRY
|
||||
/* 2x 16-bit */
|
||||
TEST(q)
|
||||
#undef TEST
|
||||
EXIT
|
||||
LKMC_EXIT
|
||||
|
||||
Reference in New Issue
Block a user