diff --git a/Project_App_Calendar/App_Src/main/global.c b/Project_App_Calendar/App_Src/main/global.c index 2911e4a..195d586 100644 --- a/Project_App_Calendar/App_Src/main/global.c +++ b/Project_App_Calendar/App_Src/main/global.c @@ -9,7 +9,7 @@ void set_r9(void *r9); //用来保存全局变量基地址 -static void * const g_r9; +static void * const volatile g_r9; //指向app自身 static app_struct *g_me; diff --git a/Project_App_Calendar/App_Src/main/global.h b/Project_App_Calendar/App_Src/main/global.h index a60f8e3..0245c9d 100644 --- a/Project_App_Calendar/App_Src/main/global.h +++ b/Project_App_Calendar/App_Src/main/global.h @@ -23,7 +23,7 @@ #define APP_INFO(name_,type_,size_,pro_) \ -const app_info_struct __app_info= \ +const app_info_struct __app_info __attribute__((used,section(".__app_info"))) = \ {\ .name=name_,\ .exe_type=type_,\ diff --git a/Project_App_Calendar/App_Src/main/main.c b/Project_App_Calendar/App_Src/main/main.c index 3a8b545..a48573d 100644 --- a/Project_App_Calendar/App_Src/main/main.c +++ b/Project_App_Calendar/App_Src/main/main.c @@ -7,15 +7,16 @@ - +char g_test_str[]="hello world"; //主函数 int my_main (void *ptr) { global_init(ptr); global_run_start(); - - //防止多次重复打开 + printf("%s\n", g_test_str); + + //防止多次重复打开 WIN_WindowStruct *win=0; if(win=WIN_GetWinByTitle(0,"calendar"),win==0) { diff --git a/Project_App_Calendar/App_Src/main/main_asm.s b/Project_App_Calendar/App_Src/main/main_asm.s index 6587c43..abc25cc 100644 --- a/Project_App_Calendar/App_Src/main/main_asm.s +++ b/Project_App_Calendar/App_Src/main/main_asm.s @@ -85,6 +85,7 @@ api_item realloc,40 @ api_item strlen,500 api_item sprintf,501 + api_item puts,502 diff --git a/Project_App_Calendar/make.py b/Project_App_Calendar/make.py index fd98acb..f9a6915 100644 --- a/Project_App_Calendar/make.py +++ b/Project_App_Calendar/make.py @@ -29,8 +29,12 @@ CFLAG=[ # debug '-g -gdwarf-2', - '-fpic', - '-e my_main -Wl,--section-start=.app_info=0x00000000 -nostartfiles -nodefaultlibs' + '-fpie', + '-fno-plt', + '-e my_main -nostartfiles -nodefaultlibs', + '-Wl,--section-start=.__app_info=0x00000000', + '-Wl,--no-dynamic-linker', + '-Wl,--undefined=__app_info' ] DEF=[ @@ -238,7 +242,7 @@ def build_target(src:list): dst=os.path.join(OUTPUT,TARGET)+".elf" if(check_rebuild(dst,obj_list)): rsp=f"{' '.join(obj_list)} -o {dst} {flags} \ - -Wl,-Map={OUTPUT}/{TARGET}.map,--cref -Wl,--gc-sections \ + -Wl,-Map={OUTPUT}/{TARGET}.map,--cref -Wl,-pie -Wl,--gc-sections \ -Wl,-print-memory-usage" print(f"閾炬帴 {dst}") with open(f"{OUTPUT}/{TARGET}.rsp",'w+') as f: