mtdbg: Fixed magic cmd flags
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 1m6s
Build system / Build (pull_request) Successful in 16m20s

Signed-off-by: Max Logaev <maxlogaev@proton.me>
This commit is contained in:
2026-01-11 02:30:38 +03:00
parent c580d4ac5b
commit c64ebdb221
2 changed files with 77 additions and 59 deletions

View File

@@ -122,7 +122,13 @@ struc fpcvt
.sizeof: .sizeof:
} }
;-----------------------------------------------------------------------------
; Command flags
CMD_WITHOUT_PARAM = 1b ; command may be called without parameters
CMD_WITH_PARAM = 10b ; command may be called with parameters
CMD_WITHOUT_LOADED_APP = 100b ; command may be called without loaded program
CMD_WITH_LOADED_APP = 1000b ; command may be called with loaded program
;----------------------------------------------------------------------------- ;-----------------------------------------------------------------------------
; Entry point ; Entry point
@@ -449,63 +455,56 @@ z1:
mov esi, commands mov esi, commands
call find_cmd call find_cmd
mov eax, aUnknownCommand mov eax, aUnknownCommand
jc .x11 jc .cmd_procg
; check command requirements
; flags field:
; &1: command may be called without parameters
; &2: command may be called with parameters
; &4: command may be called without loaded program
; &8: command may be called with loaded program
mov eax, [esi+8] mov eax, [esi+8]
mov ecx, [curarg] mov ecx, [curarg]
cmp byte [ecx], 0 cmp byte [ecx], 0
jz .noargs jz .noargs
test byte [esi+16], 2 test byte [esi+16], CMD_WITH_PARAM
jz .x11 jz .cmd_procg
jmp @f jmp @f
.noargs: .noargs:
test byte [esi+16], 1 test byte [esi+16], CMD_WITHOUT_PARAM
jz .x11 jz .cmd_procg
@@: @@:
cmp [debuggee_pid], 0 cmp [debuggee_pid], 0
jz .nodebuggee jz .nodebuggee
mov eax, aAlreadyLoaded mov eax, aAlreadyLoaded
test byte [esi+16], 8 test byte [esi+16], CMD_WITH_LOADED_APP
jz .x11 jz .cmd_procg
jmp .x9 jmp .run_cmd
.nodebuggee: .nodebuggee:
mov eax, need_debuggee mov eax, aNeedDebuggee
test byte [esi+16], 4 test byte [esi+16], CMD_WITHOUT_LOADED_APP
jnz .x9 jnz .run_cmd
.x11: .cmd_procg:
xchg esi, eax xchg esi, eax
call put_message call put_message
; store cmdline for repeating ; store cmdline for repeating
.x10: .cmd_procg_no_put_msg:
mov esi, cmdline mov esi, cmdline
mov ecx, [cmdline_len] mov ecx, [cmdline_len]
@@: @@:
cmp ecx, 0 cmp ecx, 0
jle .we jle .wait_event
mov al, [esi + ecx] mov al, [esi + ecx]
mov [cmdline_prev + ecx], al mov [cmdline_prev + ecx], al
dec ecx dec ecx
jmp @b jmp @b
.we: .wait_event:
mov [cmdline_len], 0 mov [cmdline_len], 0
jmp waitevent jmp waitevent
.x9: .run_cmd:
call dword [esi+4] call dword [esi+4]
jmp .x10 jmp .cmd_procg_no_put_msg
;----------------------------------------------------------------------------- ;-----------------------------------------------------------------------------
; Cmdline handling ; Cmdline handling

View File

@@ -499,7 +499,7 @@ mxp_lzo_sig2_size = $ - mxp_lzo_sig2
OnReload: OnReload:
cmp [debuggee_pid], 0 cmp [debuggee_pid], 0
jnz terminate_reload jnz terminate_reload
mov esi, need_debuggee mov esi, aNeedDebuggee
cmp byte [loadname], 0 cmp byte [loadname], 0
jnz do_reload jnz do_reload
jz put_message jz put_message
@@ -1880,66 +1880,85 @@ help_groups:
;----------------------------------------------------------------------------- ;-----------------------------------------------------------------------------
; Commands format definitions ; Commands format definitions
; TODO: make it with macros
; flags field:
; &1: command may be called without parameters
; &2: command may be called with parameters
; &4: command may be called without loaded program
; &8: command may be called with loaded program
commands: commands:
dd _aH, OnHelp, HelpSyntax, HelpHelp dd _aH, OnHelp, HelpSyntax, HelpHelp
db 0Fh db CMD_WITHOUT_PARAM or CMD_WITH_PARAM or CMD_WITHOUT_LOADED_APP or CMD_WITH_LOADED_APP
dd aHelp, OnHelp, HelpSyntax, HelpHelp dd aHelp, OnHelp, HelpSyntax, HelpHelp
db 0Fh db CMD_WITHOUT_PARAM or CMD_WITH_PARAM or CMD_WITHOUT_LOADED_APP or CMD_WITH_LOADED_APP
dd aQuit, OnQuit, QuitSyntax, QuitHelp dd aQuit, OnQuit, QuitSyntax, QuitHelp
db 0Dh db CMD_WITHOUT_PARAM or CMD_WITHOUT_LOADED_APP or CMD_WITH_LOADED_APP
dd aLoad, OnLoad, LoadSyntax, LoadHelp dd aLoad, OnLoad, LoadSyntax, LoadHelp
db 6 db CMD_WITH_PARAM or CMD_WITHOUT_LOADED_APP
dd aReload, OnReload, ReloadSyntax, ReloadHelp dd aReload, OnReload, ReloadSyntax, ReloadHelp
db 0Dh db CMD_WITHOUT_PARAM or CMD_WITHOUT_LOADED_APP or CMD_WITH_LOADED_APP
dd aTerminate, OnTerminate, TerminateSyntax, TerminateHelp dd aTerminate, OnTerminate, TerminateSyntax, TerminateHelp
db 9 db CMD_WITHOUT_PARAM or CMD_WITH_LOADED_APP
dd aDetach, OnDetach, DetachSyntax, DetachHelp dd aDetach, OnDetach, DetachSyntax, DetachHelp
db 9 db CMD_WITHOUT_PARAM or CMD_WITH_LOADED_APP
dd aSuspend, OnSuspend, SuspendSyntax, SuspendHelp dd aSuspend, OnSuspend, SuspendSyntax, SuspendHelp
db 9 db CMD_WITHOUT_PARAM or CMD_WITH_LOADED_APP
dd aResume, OnResume, ResumeSyntax, ResumeHelp dd aResume, OnResume, ResumeSyntax, ResumeHelp
db 0Bh db CMD_WITHOUT_PARAM or CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd aStep, OnStepMultiple, StepSyntax, StepHelp dd aStep, OnStepMultiple, StepSyntax, StepHelp
db 0Bh db CMD_WITHOUT_PARAM or CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd aProceed, OnProceedMultiple, ProceedSyntax, ProceedHelp dd aProceed, OnProceedMultiple, ProceedSyntax, ProceedHelp
db 0Bh db CMD_WITHOUT_PARAM or CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd aCalc, OnCalc, CalcSyntax, CalcHelp dd aCalc, OnCalc, CalcSyntax, CalcHelp
db 0Eh db CMD_WITH_PARAM or CMD_WITHOUT_LOADED_APP or CMD_WITH_LOADED_APP
dd aDump, OnDump, DumpSyntax, DumpHelp dd aDump, OnDump, DumpSyntax, DumpHelp
db 0Bh db CMD_WITHOUT_PARAM or CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd aUnassemble, OnUnassemble, UnassembleSyntax, UnassembleHelp dd aUnassemble, OnUnassemble, UnassembleSyntax, UnassembleHelp
db 0Bh db CMD_WITHOUT_PARAM or CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd aBp, OnBp, BpSyntax, BpHelp dd aBp, OnBp, BpSyntax, BpHelp
db 0Ah db CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd aBpm, OnBpmb, BpmSyntax, BpmHelp dd aBpm, OnBpmb, BpmSyntax, BpmHelp
db 0Ah db CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd aBpmb, OnBpmb, BpmSyntax, BpmHelp dd aBpmb, OnBpmb, BpmSyntax, BpmHelp
db 0Ah db CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd aBpmw, OnBpmw, BpmSyntax, BpmHelp dd aBpmw, OnBpmw, BpmSyntax, BpmHelp
db 0Ah db CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd aBpmd, OnBpmd, BpmSyntax, BpmHelp dd aBpmd, OnBpmd, BpmSyntax, BpmHelp
db 0Ah db CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd aBl, OnBl, BlSyntax, BlHelp dd aBl, OnBl, BlSyntax, BlHelp
db 0Bh db CMD_WITHOUT_PARAM or CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd aBc, OnBc, BcSyntax, BcHelp dd aBc, OnBc, BcSyntax, BcHelp
db 0Ah db CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd aBd, OnBd, BdSyntax, BdHelp dd aBd, OnBd, BdSyntax, BdHelp
db 0Ah db CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd aBe, OnBe, BeSyntax, BeHelp dd aBe, OnBe, BeSyntax, BeHelp
db 0Ah db CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd aReg, OnReg, RSyntax, RHelp dd aReg, OnReg, RSyntax, RHelp
db 0Ah db CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd aUnpack, OnUnpack, UnpackSyntax, UnpackHelp dd aUnpack, OnUnpack, UnpackSyntax, UnpackHelp
db 9 db CMD_WITHOUT_PARAM or CMD_WITH_LOADED_APP
dd aLoadSymbols, OnLoadSymbols, LoadSymbolsSyntax, LoadSymbolsHelp dd aLoadSymbols, OnLoadSymbols, LoadSymbolsSyntax, LoadSymbolsHelp
db 0Ah db CMD_WITH_PARAM or CMD_WITH_LOADED_APP
dd 0 dd 0
;----------------------------------------------------------------------------- ;-----------------------------------------------------------------------------
@@ -2122,7 +2141,7 @@ load_err_msgs:
.1F db 'Not Menuet/Kolibri executable.',10,0 .1F db 'Not Menuet/Kolibri executable.',10,0
.20 db 'Too many processes.',10,0 .20 db 'Too many processes.',10,0
load_succ_msg db 'Program loaded successfully! PID=%4X. Use "g" to run.',10,0 load_succ_msg db 'Program loaded successfully! PID=%4X. Use "g" to run.',10,0
need_debuggee db 'No program loaded. Use "load" command.',10,0 aNeedDebuggee db 'No program loaded. Use "load" command.',10,0
aAlreadyLoaded db 'Program is already loaded. Use "terminate" or "detach" commands',10,0 aAlreadyLoaded db 'Program is already loaded. Use "terminate" or "detach" commands',10,0
terminated_msg db 'Program terminated.',10,0 terminated_msg db 'Program terminated.',10,0
aException db 'Debugged program caused an exception %2X. ', 0 aException db 'Debugged program caused an exception %2X. ', 0