From bebf5bff285165c40507573485682576d7797968 Mon Sep 17 00:00:00 2001 From: Yatis Date: Wed, 20 Oct 2021 18:52:06 +0200 Subject: [PATCH] Gintrace 0.9.0 - Support Gint 2.4.0 @add <> support gint 2.4.0 (remove custom gint fork dependency) <> new icon @update <> src/menu/callgraph: remove callgraph export <> src/menu/context: display VBR information <> src/menu/internal/dictionary/syscall: add some new syscalls' information @fix <> Makefile: libc link and fxcg50 header --- .gitignore | 1 + Makefile | 8 ++-- TODO | 4 +- assets/cg/icon-cg-sel.png | Bin 8388 -> 8124 bytes assets/cg/icon-cg-uns.png | Bin 4629 -> 12885 bytes demo/main.c | 36 +++++++++++---- gintrace.g3a | Bin 120164 -> 127084 bytes libgintrace-cg.a | Bin 115844 -> 114402 bytes src/gint.c | 57 ------------------------ src/menu/callgraph.c | 13 +++--- src/menu/context.c | 4 ++ src/menu/internal/dictionary/syscalls.c | 18 +++++++- src/tracer.c | 3 ++ src/ubc/handler.c | 8 ++-- src/ubc/kernel.S | 4 +- src/ubc/ubc.c | 8 ---- 16 files changed, 71 insertions(+), 93 deletions(-) delete mode 100644 src/gint.c diff --git a/.gitignore b/.gitignore index 5e44124..d89083e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ build* *.cfg +commit.txt diff --git a/Makefile b/Makefile index 5e261fc..b74c87f 100644 --- a/Makefile +++ b/Makefile @@ -38,7 +38,7 @@ # #--- MAJOR := 0 -MINOR := 8 +MINOR := 9 PATCH := 0 EXTRAVERSION := @@ -236,16 +236,18 @@ target-$(tname)-objcopy := $(CONFIG.TOOLCHAIN)-objcopy # generate platform specific flags ifeq ($1,fx) target-$(tname)-cflags += -D FX9860G -m3 + target-$(tname)-cflags += $(FX_INCLUDE) $(FX_CFLAGS) target-$(tname)-ldflags += -T fx9860g.ld target-$(tname)-libs := -L. -L $(GCC_INCLUDE_FX) - target-$(tname)-libs += -lgint-fx -lgintrace-fx -lgint-fx -lgcc + target-$(tname)-libs += -lgint-fx -lgintrace-fx -lgint-fx -lc -lgcc target-$(tname)-exec := $3.g1a endif ifeq ($1,cg) target-$(tname)-cflags += -D FXCG50 -m4-nofpu + target-$(tname)-cflags += $(CG_INCLUDE) $(CG_CFLAGS) target-$(tname)-ldflags += -T fxcg50.ld target-$(tname)-libs := -L. -L $(GCC_INCLUDE_CG) - target-$(tname)-libs += -lgint-cg -lgintrace-cg -lgint-cg -lgcc + target-$(tname)-libs += -lgint-cg -lgintrace-cg -lgint-cg -lc -lgcc target-$(tname)-exec := $3.g3a endif diff --git a/TODO b/TODO index e888b58..371b994 100644 --- a/TODO +++ b/TODO @@ -3,15 +3,17 @@ * fix fx9860 support @update +* session: add custom world in each session * makefile: handle header dependencies * makefile: handle dynamic lib generation * makefile: generate the documentation * context: refacto printXY() ! * hexdump: search commands * callgraph: improve user interface. -* icon @feature +* be compilent with giteapc +* switch to cmake * add documentation * switch to justUI * add drivers menu diff --git a/assets/cg/icon-cg-sel.png b/assets/cg/icon-cg-sel.png index 7137b504cfd44f62f3105ce7a203b9100a557d0f..9503f547d1d7736b20b5b7fe0d1b0b89da6c5d3a 100644 GIT binary patch literal 8124 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 WPo-~AFpw+&0000 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 #include #include @@ -36,15 +37,22 @@ int main(void) } #endif +#ifdef FXCG50 /* get syscall address */ systab = *(void ***)0x8002007c; - //syscall = systab[0x1e48]; // Fugue_debug_menu - syscall = systab[0x1da3]; // Bfile_OpenFile_OS - + //syscall = systab[0x1e48]; // Fugue_debug_menu() + //syscall = systab[0x1da3]; // Bfile_OpenFile_OS() + //syscall = systab[0x1353]; // Comm_Open() + //syscall = systab[0x1dac]; // Bfile_ReadFile_OS() + syscall = systab[0x1630]; // App_optimize() + //syscall = systab[0x1e56]; +#endif /* prepare tracer */ - session = tracer_create_session(syscall, - TRACER_DISASM | TRACER_CONTEXT | TRACER_HEXDUMP | TRACER_CALLGRAPH); + session = tracer_create_session( + syscall, + TRACER_DISASM | TRACER_CONTEXT | TRACER_HEXDUMP + ); if (session == NULL) { dclear(C_WHITE); dtext(0, 0, C_BLACK, "Unable to create tracer session"); @@ -59,12 +67,24 @@ int main(void) //--- // TEST part //--- - void (*bfile_openfile_os)(const uint16_t *filename, int mode, int p3); + void (*app_optimize)(void) = (void*)syscall; + gint_world_switch(GINT_CALL(app_optimize)); + + +#if 0 + int (*bfile_openfile_os)(const uint16_t *filename, int mode, int p3); + int (*bfile_readfile_os)(int handle, void *b, size_t n, off_t p); + //void (*comm_open)(int mode) = syscall; + uint8_t buffer[128]; + int handle; gint_switch_to_world(kernel_env_casio); - bfile_openfile_os = syscall; - bfile_openfile_os(u"\\\\fls0\\abcdefgijklmn", BFile_ReadOnly, 0); + bfile_openfile_os = systab[0x1da3]; + handle = bfile_openfile_os(u"\\\\fls0\\azerty", BFile_ReadOnly, 0); + bfile_readfile_os = systab[0x1dac]; + bfile_readfile_os(handle, buffer, 128, 0); gint_switch_to_world(kernel_env_gint); +#endif diff --git a/gintrace.g3a b/gintrace.g3a index 0351cf71c7ae3da5f046a6529b866d202f8eb744..4e19d2851da294dc671290d8ce3057e910d2bcdc 100644 GIT binary patch delta 48711 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 Ce4t1G literal 120164 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 z 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 diff --git a/libgintrace-cg.a b/libgintrace-cg.a index ea4ba1f080dee2b4f524361857baf51a6f3dc1b6..927edaba775a94aa0c4d3b30704dfaad643f1fd5 100644 GIT binary patch delta 8002 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 delta 9588 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 wpTp{7p$H<{r~^~ diff --git a/src/gint.c b/src/gint.c deleted file mode 100644 index f2dc2d1..0000000 --- a/src/gint.c +++ /dev/null @@ -1,57 +0,0 @@ -#include "gintrace/ubc.h" - -#include -#include -#include -#include -#include - -/* external symbols */ -extern void *kernel_env_casio; -extern void *kernel_env_gint; -extern void *kernel_env_tracer; - -/* gint_switch(): Temporarily switch out of gint */ -void gint_switch(void (*function)(void)) -{ - void *buffctx_current; - void *buffctx; - - /* check useless action */ - if (function == NULL) - return; - - /* check useless world switch */ - buffctx_current = drivers_get_current(); - if (kernel_env_casio == buffctx_current) { - function(); - return; - } - - /* Switch from gint to the OS after a short wait */ - ubc_uninstall(); - buffctx = drivers_switch(kernel_env_casio); - ubc_install(); - - /* involve the function */ - function(); - - /* then switch back to gint once the os finishes working */ - ubc_uninstall(); - drivers_switch(buffctx); - ubc_install(); -} - -/* Switch from gint to the OS after a short wait */ -void *gint_switch_to_world(void *buffctx) -{ - void *buffctx_current; - - buffctx_current = drivers_get_current(); - if (buffctx != buffctx_current) { - ubc_uninstall(); - drivers_switch(buffctx); - ubc_install(); - } - return (buffctx_current); -} diff --git a/src/menu/callgraph.c b/src/menu/callgraph.c index 603674d..fbf77d8 100644 --- a/src/menu/callgraph.c +++ b/src/menu/callgraph.c @@ -14,11 +14,6 @@ #include "./src/menu/internal/dictionary.h" -/* internal info (TODO: move me) */ -extern void *kernel_env_gint; -extern void *kernel_env_casio; -extern void *gint_switch_to_world(void *buffctx); - //--- // callode management //--- @@ -311,11 +306,12 @@ static void callgraph_command(struct tsession *session, int argc, char **argv) input_write("argument missing"); return; } - if (strcmp(argv[0], "export") != 0) { + //if (strcmp(argv[0], "export") != 0) { input_write("'%s': command unknown", argv[0]); - return; - } + // return; + //} +#if 0 /* convert the filename (arg2) into Bfile pathname */ int i = -1; uint16_t pathname[14 + strlen(argv[1]) + 1]; @@ -377,6 +373,7 @@ static void callgraph_command(struct tsession *session, int argc, char **argv) BFile_Close(fd); gint_switch_to_world(kernel_env_gint); input_write("success"); +#endif } /* callgraph_special_ctor(): Special constructor used to generate the graph */ diff --git a/src/menu/context.c b/src/menu/context.c index 331b701..e5cacd4 100644 --- a/src/menu/context.c +++ b/src/menu/context.c @@ -57,11 +57,15 @@ static void context_ctor(struct tsession *session) /* context_display(); Display trace information */ static void context_display(struct tsession *session) { + uintptr_t __vbr; int x; int y; + __asm__ volatile ("stc vbr, %0": "=r"(__vbr)::); + x = session->menu.context.cursor.hoffset; y = session->menu.context.cursor.voffset; + printXY(0 + x, 0 + y, "vbr : %p", __vbr); printXY(0 + x, 0 + y, "gbr : %p", session->info.context->gbr); printXY(0 + x, 1 + y, "macl : %p", session->info.context->mach); printXY(0 + x, 2 + y, "mach : %p", session->info.context->macl); diff --git a/src/menu/internal/dictionary/syscalls.c b/src/menu/internal/dictionary/syscalls.c index 48d3a22..e412ca3 100644 --- a/src/menu/internal/dictionary/syscalls.c +++ b/src/menu/internal/dictionary/syscalls.c @@ -615,17 +615,33 @@ const struct sysname casio_syscalls[] = { // // Yatis // + {.syscall = 0x0dc0, .name = "void SMEM_Optimize(void)"}, + {.syscall = 0x0dd2, .name = "int SMEM_fugue_retval_to_bfile_revet(int retval);"}, + {.syscall = 0x0de2, .name = "int SMEM_bfile_get_file_info(int handle, uint8_t buffer[540]);"}, {.syscall = 0x0db0, .name = "int fugue_unmount(void);"}, {.syscall = 0x0db1, .name = "int fugue_mount(void);"}, {.syscall = 0x0dd2, .name = "const uint16_t *FONTCHARACTER_convert_to_FUGUECHARACTER(const uint16_t *src, uint8_t *dest);"}, + {.syscall = 0x0de2, .name = "int SMEM_get_file_info(int handle, uint8_t buffer[540]);"}, {.syscall = 0x0ea6, .name = "void Debug_menu_TestMode(void);"}, {.syscall = 0x0ea7, .name = "void Debug_menu_TestMode(int unknown);"}, - {.syscall = 0x1da1, .name = "int fugue_logical_format(void);"}, + {.syscall = 0x134e, .name = "int USB_Open(int param);"}, + {.syscall = 0x135d, .name = "int Comm_IsOpen(void);"}, + {.syscall = 0x135e, .name = "int Comm_GetCurrentSelector(void);"}, + {.syscall = 0x135f, .name = "int Comm_OS_wait(int delay_ms);"}, + {.syscall = 0x1361, .name = "int Serial_Reset(int action);"}, + {.syscall = 0x14ba, .name = "int USB_PowerOn(void);"}, + {.syscall = 0x14bb, .name = "int USB_PowerOff(void);"}, + {.syscall = 0x1da1, .name = "int SMEM_logical_format(void *unknown, int mode, int unknown);"}, {.syscall = 0x1e44, .name = "void Debug_menu_FileSystem(void);"}, {.syscall = 0x1e45, .name = "void Debug_menu_Fugue_OpenFileInfo(void);"}, {.syscall = 0x1e48, .name = "void Debug_menu_Fugue_VolumeInfo(void);"}, {.syscall = 0x1e49, .name = "void Debug_menu_Fugue_LogInfo(void);"}, {.syscall = 0x1e66, .name = "void Debug_menu_stackAndHeap(void);"}, + {.syscall = 0x1ece, .name = "void USB_InterruptHandler(void);"}, + {.syscall = 0x1d99, .name = "int SD_isMounted(void);"}, + {.syscall = 0x1dc3, .name = "int Bfile_Optimize(const uint16_t *device);"}, + {.syscall = 0x1263, .name = "int SD_read(int handle, void *buffer, size_t nb, off_t pos);"}, + {.syscall = 0x1267, .name = "int SD_optimize(void);"}, // // Stop diff --git a/src/tracer.c b/src/tracer.c index 9b9d086..62ff63c 100644 --- a/src/tracer.c +++ b/src/tracer.c @@ -6,6 +6,9 @@ /* global session (TODO: thread-safe) */ struct tsession *session = NULL; +//TODO: ELF PIE world +//TODO: custom world selection + /* tracer_new_session(): Create a new session */ struct tsession *tracer_create_session(void *address, int menu) { diff --git a/src/ubc/handler.c b/src/ubc/handler.c index 2a1c07a..38714b4 100644 --- a/src/ubc/handler.c +++ b/src/ubc/handler.c @@ -6,9 +6,7 @@ #include "gintrace/ubc.h" #include "gintrace/tracer.h" -/* world information */ -extern void *kernel_env_tracer; -extern void *gint_switch_to_world(void *buffctx); +#include /* gintrac_handler(): UBC handler * @note: @@ -40,7 +38,7 @@ void gintrace_handler(struct ucontext *context) } /* user break point */ - session->info.buffctx = gint_switch_to_world(kernel_env_tracer); + gint_world_switch_in(gint_world_os, gint_world_addin); menu_init(session->display.gmenu); while (menu_is_open(session->display.gmenu) == 0) { menu_draw(session->display.gmenu); @@ -56,5 +54,5 @@ void gintrace_handler(struct ucontext *context) /* unblock UBC interrupt */ ubc_unblock(); - gint_switch_to_world(session->info.buffctx); + gint_world_switch_out(gint_world_addin, gint_world_os); } diff --git a/src/ubc/kernel.S b/src/ubc/kernel.S index d41182c..71977ae 100644 --- a/src/ubc/kernel.S +++ b/src/ubc/kernel.S @@ -83,8 +83,8 @@ ubc_kernel_inth_prologue: lds.l @r15+, pr ! Clean exit. - rte ! Interrupt Exit. - nop ! (db) Safety first. + rte + nop .align 4 ubc_handler: .long _ubc_handler diff --git a/src/ubc/ubc.c b/src/ubc/ubc.c index 569afb6..ddfc5bf 100644 --- a/src/ubc/ubc.c +++ b/src/ubc/ubc.c @@ -8,10 +8,6 @@ struct sh7305_ubc_context ubctx; void (*ubc_handler)(struct ucontext *ctx) = NULL; int ubc_driver_installed = 0; -extern void *kernel_env_gint; -void *kernel_env_tracer = NULL; - - /* ubc_install(): Install the UBC driver */ void ubc_install(void) { @@ -47,10 +43,6 @@ void ubc_install(void) SH7305_UBC.CBR1.CE = 0; SH7305_UBC.CBCR.UBDE = 1; - /* generate the "tracer" tmp context */ - if (kernel_env_tracer == NULL) - drivers_context_duplicate(&kernel_env_tracer, kernel_env_gint); - /* indicate that the UBC driver is installed */ ubc_driver_installed = 1; }