From 47ba174fb134b279f68327bd355d772e22bce63e Mon Sep 17 00:00:00 2001 From: liankong Date: Mon, 31 Mar 2025 18:31:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E6=94=AF=E6=8C=81clang?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/kpm/kpm.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/kernel/kpm/kpm.c b/kernel/kpm/kpm.c index 74fa59fb..f6d65b2a 100644 --- a/kernel/kpm/kpm.c +++ b/kernel/kpm/kpm.c @@ -44,10 +44,20 @@ #include "kpm.h" #include "compact.h" +#ifndef NO_OPTIMIZE +#if defined(__GNUC__) && !defined(__clang__) + #define NO_OPTIMIZE __attribute__((optimize("O0"))) +#elif defined(__clang__) + #define NO_OPTIMIZE __attribute__((optnone)) +#else + #define NO_OPTIMIZE +#endif +#endif + // ============================================================================================ noinline -__attribute__((optimize("O0"))) +NO_OPTIMIZE int sukisu_kpm_load_module_path(const char* path, const char* args, void* ptr) { // This is a KPM module stub. printk("KPM: Stub function called (sukisu_kpm_load_module_path). path=%s args=%s ptr=%p\n", path, args, ptr); @@ -55,7 +65,7 @@ int sukisu_kpm_load_module_path(const char* path, const char* args, void* ptr) { } noinline -__attribute__((optimize("O0"))) +NO_OPTIMIZE int sukisu_kpm_unload_module(const char* name, void* ptr) { // This is a KPM module stub. printk("KPM: Stub function called (sukisu_kpm_unload_module). name=%s ptr=%p\n", name, ptr); @@ -63,7 +73,7 @@ int sukisu_kpm_unload_module(const char* name, void* ptr) { } noinline -__attribute__((optimize("O0"))) +NO_OPTIMIZE int sukisu_kpm_num(void) { // This is a KPM module stub. printk("KPM: Stub function called (sukisu_kpm_num).\n"); @@ -71,7 +81,7 @@ int sukisu_kpm_num(void) { } noinline -__attribute__((optimize("O0"))) +NO_OPTIMIZE int sukisu_kpm_info(const char* name, void __user* out) { // This is a KPM module stub. printk("KPM: Stub function called (sukisu_kpm_info). name=%s buffer=%p\n", name, out); @@ -79,7 +89,7 @@ int sukisu_kpm_info(const char* name, void __user* out) { } noinline -__attribute__((optimize("O0"))) +NO_OPTIMIZE int sukisu_kpm_list(void __user* out, unsigned int bufferSize) { // This is a KPM module stub. printk("KPM: Stub function called (sukisu_kpm_list). buffer=%p size=%d\n", out, bufferSize); @@ -87,7 +97,7 @@ int sukisu_kpm_list(void __user* out, unsigned int bufferSize) { } noinline -__attribute__((optimize("O0"))) +NO_OPTIMIZE int sukisu_kpm_control(void __user* name, void __user* args) { // This is a KPM module stub. printk("KPM: Stub function called (sukisu_kpm_control). name=%p args=%p\n", name, args); @@ -95,7 +105,7 @@ int sukisu_kpm_control(void __user* name, void __user* args) { } noinline -__attribute__((optimize("O0"))) +NO_OPTIMIZE int sukisu_kpm_version(void __user* out, unsigned int bufferSize) { // This is a KPM module stub. printk("KPM: Stub function called (sukisu_kpm_version). buffer=%p size=%d\n", out, bufferSize); @@ -111,7 +121,7 @@ EXPORT_SYMBOL(sukisu_kpm_version); EXPORT_SYMBOL(sukisu_kpm_control); noinline -__attribute__((optimize("O0"))) +NO_OPTIMIZE int sukisu_handle_kpm(unsigned long arg3, unsigned long arg4, unsigned long arg5) { if(arg3 == SUKISU_KPM_LOAD) {