#include <linux/module.h>
#include <linux/string.h>
#include <linux/uaccess.h>
+#include <linux/version.h>
#include <linux/kallsyms.h>
#include "kp_module.h"
static void print_mod_info(void)
{
struct module *mod = THIS_MODULE;
+ void *init_begin, *init_end, *core_begin, *core_end;
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0)
+ init_begin = mod->init_layout.base;
+ init_end = mod->init_layout.base + mod->init_layout.text_size;
+ core_begin = mod->core_layout.base;
+ core_end = mod->core_layout.base + mod->core_layout.text_size;
+#else
+ init_begin = mod->module_init;
+ init_end = mod->module_init + mod->init_text_size;
+ core_begin = mod->module_core;
+ core_end = mod->module_core + mod->core_text_size;
+#endif
printk("### MOD_INFO:\n");
- printk(" core: %p..%p\n", mod->module_init, mod->module_init + mod->init_text_size);
- printk(" init: %p..%p\n", mod->module_core, mod->module_core + mod->core_text_size);
+ printk(" init: %p..%p\n", init_begin, init_end);
+ printk(" core: %p..%p\n", core_begin, core_end);
printk("\n");
}