From 04f1d1e292517137c4d1badecda65771e0b2322c Mon Sep 17 00:00:00 2001 From: pierre Date: Tue, 21 Apr 1998 14:46:33 +0000 Subject: [PATCH] + debug info better output no normal code changed --- rtl/dos/go32v2/dpmiexcp.pp | 76 ++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 32 deletions(-) diff --git a/rtl/dos/go32v2/dpmiexcp.pp b/rtl/dos/go32v2/dpmiexcp.pp index 61af503c94..579314e8d3 100644 --- a/rtl/dos/go32v2/dpmiexcp.pp +++ b/rtl/dos/go32v2/dpmiexcp.pp @@ -20,12 +20,13 @@ Unit DPMIEXCP; { Real mode control-C check removed because I got problems with the RMCB -can be used by setting this conditionnal } +can be used by setting this conditionnal (PM) } +{ works now correctly (PM) } {$define UseRMcbrk} interface -uses go32{,sysutils}; +uses go32; {$S- no stack check !!! } {$packrecords 2 } @@ -168,7 +169,7 @@ end; #include /* For DS base/limit info */ #include } -const newline = #13#10; +{ const newline = #13#10; } procedure err(x : string); begin @@ -176,6 +177,12 @@ begin flush(stderr); end; +procedure errln(x : string); +begin + writeln(stderr, x); + flush(stderr); +end; + { extern unsigned end __asm__ ('end'); } const cbrk_vect : byte = $1b; { /* May be $06 for PC98 */ } @@ -194,8 +201,7 @@ procedure itox(v,len : longint); var st : string; begin st:=hexstr(v,len); - write(stderr,st); - flush(stderr); + err(st); end; function except_to_sig(excep : longint) : longint; @@ -230,8 +236,8 @@ function except_to_sig(excep : longint) : longint; procedure show_call_frame; begin - err('Call frame traceback EIPs:'+newline); - err(' 0x'+hexstr(djgpp_exception_state^.__eip, 8)+newline); + errln('Call frame traceback EIPs:'); + errln(' 0x'+hexstr(djgpp_exception_state^.__eip, 8)); dump_stack(djgpp_exception_state^.__ebp); end; @@ -266,7 +272,7 @@ const procedure dump_selector(const name : string; sel : word); var base,limit : longint; begin - write(stderr, name); + err(name); err(': sel='); itox(sel, 4); if (sel<>0) then @@ -282,7 +288,7 @@ procedure dump_selector(const name : string; sel : word); limit:=get_segment_limit(sel); err(' limit='); itox(limit, 8); end; - err(newline); + errln(''); end; function farpeekb(sel : word;offset : longint) : byte; @@ -341,7 +347,7 @@ function do_faulting_finish_message : integer; { Control-C should stop the program also !} {if (signum = $79) then begin - err(newline); + errln(''); exit(-1); end;} if ((signum < EXCEPTIONCOUNT) and (has_error[signum]=1)) then @@ -353,7 +359,7 @@ function do_faulting_finish_message : integer; itox(errorcode, 4); end; end; - err(newline); + errln(''); err('eax='); itox(djgpp_exception_state^.__eax, 8); err(' ebx='); itox(djgpp_exception_state^.__ebx, 8); @@ -361,18 +367,18 @@ function do_faulting_finish_message : integer; err(' edx='); itox(djgpp_exception_state^.__edx, 8); err(' esi='); itox(djgpp_exception_state^.__esi, 8); err(' edi='); itox(djgpp_exception_state^.__edi, 8); - err(newline); + errln(''); err('ebp='); itox(djgpp_exception_state^.__ebp, 8); err(' esp='); itox(djgpp_exception_state^.__esp, 8); err(' program='); - err(paramstr(0)+newline); + errln(paramstr(0)); dump_selector('cs', djgpp_exception_state^.__cs); dump_selector('ds', djgpp_exception_state^.__ds); dump_selector('es', djgpp_exception_state^.__es); dump_selector('fs', djgpp_exception_state^.__fs); dump_selector('gs', djgpp_exception_state^.__gs); dump_selector('ss', djgpp_exception_state^.__ss); - err(newline); + errln(''); if (djgpp_exception_state^.__cs = get_cs) then show_call_frame; { must not return !! } @@ -444,14 +450,14 @@ function _raise(sig : longint) : longint; err('Exiting due to signal $'); itox(sig, 4); end; - err(newline); + errln(''); { if(djgpp_exception_state<>nil) then } do_faulting_finish_message(); {/* Exits, does not return */ } exit(-1); end; if ((longint(temp) < longint(starttext)) or (longint(temp) > longint(endtext))) then begin - err('Bad signal handler, '); + errln('Bad signal handler, '); goto traceback_exit; end; temp(sig); @@ -613,13 +619,13 @@ const exception_level : longint = 0; {/* User handler did not exit or longjmp, we must exit */} err('FPK cannot continue from exception, exiting due to signal '); itox(sig, 4); - err(newline); + errln(''); end else begin if exception_level>2 then begin - err('FPK triple exception, exiting !!! '); + errln('FPK triple exception, exiting !!! '); if (exceptions_on) then djgpp_exception_toggle; asm @@ -629,7 +635,7 @@ const exception_level : longint = 0; end; err('FPK double exception, exiting due to signal '); itox(sig, 4); - err(newline); + errln(''); end; do_faulting_finish_message; end; @@ -669,13 +675,11 @@ procedure djgpp_exception_toggle; {$ifdef DEBUG} if exceptions_on then begin - err('Disabling FPK exceptions'); - err(newline); + errln('Disabling FPK exceptions'); end else begin - err('Enabling FPK exceptions'); - err(newline); + errln('Enabling FPK exceptions'); end; {$endif DEBUG} { toggle here to avoid infinite recursion } @@ -692,7 +696,7 @@ procedure djgpp_exception_toggle; begin if (i <> 2) {or (_crt0_startup_flags & _CRT0_FLAG_NMI_SIGNAL))} then if not set_pm_exception_handler(i,except_ori[i]) then - err('error setting exception nø'+hexstr(i,2)); + errln('error setting exception nø'+hexstr(i,2)); except_ori[i] := _except; end else @@ -701,7 +705,7 @@ procedure djgpp_exception_toggle; begin if (i <> 2) {or (_crt0_startup_flags & _CRT0_FLAG_NMI_SIGNAL))} then if not set_exception_handler(i,except_ori[i]) then - err('error setting exception nø'+hexstr(i,2)); + errln('error setting exception nø'+hexstr(i,2)); except_ori[i] := _except; end end; @@ -719,7 +723,7 @@ procedure djgpp_exception_toggle; free_rm_callback(cbrk_rmcb); cbrk_hooked := false; {$ifdef DEBUG} - err('back to ori rm cbrk '+hexstr(cbrk_ori.segment,4)+':'+hexstr(longint(cbrk_ori.offset),4)); + errln('back to ori rm cbrk '+hexstr(cbrk_ori.segment,4)+':'+hexstr(longint(cbrk_ori.offset),4)); {$endif DEBUG} end @@ -727,12 +731,12 @@ procedure djgpp_exception_toggle; begin get_rm_interrupt(cbrk_vect, cbrk_ori); {$ifdef DEBUG} - err('ori rm cbrk '+hexstr(cbrk_ori.segment,4)+':'+hexstr(longint(cbrk_ori.offset),4)); + errln('ori rm cbrk '+hexstr(cbrk_ori.segment,4)+':'+hexstr(longint(cbrk_ori.offset),4)); {$endif DEBUG} get_rm_callback(djgpp_cbrk_hdlr, cbrk_regs, cbrk_rmcb); set_rm_interrupt(cbrk_vect, cbrk_rmcb); {$ifdef DEBUG} - err('now rm cbrk '+hexstr(cbrk_rmcb.segment,4)+':'+hexstr(longint(cbrk_rmcb.offset),4)); + errln('now rm cbrk '+hexstr(cbrk_rmcb.segment,4)+':'+hexstr(longint(cbrk_rmcb.offset),4)); {$endif DEBUG} cbrk_hooked := true; end; @@ -933,8 +937,12 @@ djgpp_exception_setup; end. { $Log$ - Revision 1.1 1998-03-25 11:18:42 root - Initial revision + Revision 1.2 1998-04-21 14:46:33 pierre + + debug info better output + no normal code changed + + Revision 1.1.1.1 1998/03/25 11:18:42 root + * Restored version Revision 1.9 1998/03/18 15:34:46 pierre + fpu state is restaured in excep_exit @@ -963,8 +971,12 @@ end. { $Log$ - Revision 1.1 1998-03-25 11:18:42 root - Initial revision + Revision 1.2 1998-04-21 14:46:33 pierre + + debug info better output + no normal code changed + + Revision 1.1.1.1 1998/03/25 11:18:42 root + * Restored version Revision 1.9 1998/03/18 15:34:46 pierre + fpu state is restaured in excep_exit