From d0c462bb30935cb47cce6e59bbd5e7bdf46cf9e0 Mon Sep 17 00:00:00 2001 From: Casper Hornstrup Date: Sat, 30 Oct 2004 17:25:38 +0000 Subject: [PATCH] - Print stack frames on crashes. - Users should report errors to ros-dev@reactos.com. svn path=/trunk/; revision=11480 --- freeldr/freeldr/CHANGELOG | 5 ++++ freeldr/freeldr/arch/i386/i386trap.S | 34 +++++++++++++++++++++++++--- freeldr/freeldr/include/arch.h | 4 ---- freeldr/freeldr/include/version.h | 4 ++-- 4 files changed, 38 insertions(+), 9 deletions(-) diff --git a/freeldr/freeldr/CHANGELOG b/freeldr/freeldr/CHANGELOG index a84da6d7f07..7b1a3de91b0 100644 --- a/freeldr/freeldr/CHANGELOG +++ b/freeldr/freeldr/CHANGELOG @@ -1,3 +1,8 @@ +Changes in v1.8.26 (10/30/2004) (chorns) + +- Print stack frames on crashes. +- Users should report errors to ros-dev@reactos.com. + Changes in v1.8.25 (10/30/2004) (chorns) - Support FULL_MAP command line option. diff --git a/freeldr/freeldr/arch/i386/i386trap.S b/freeldr/freeldr/arch/i386/i386trap.S index a2d30e5f090..4f3ceed79d8 100644 --- a/freeldr/freeldr/arch/i386/i386trap.S +++ b/freeldr/freeldr/arch/i386/i386trap.S @@ -80,11 +80,10 @@ i386ExceptionHandlerText: - .ascii "FreeLoader i386 Exception Handler\n" + .ascii "An error occured in FreeLoader\n" .ascii VERSION .ascii "\n" -// .asciz "Report bugs to Brian Palmer \n\n" - .asciz "Report bugs to ReactOS Kernel mailing list \n\n" + .asciz "Report this error to the ReactOS Development mailing list \n\n" i386DivideByZeroText: .asciz "Exception 00: DIVIDE BY ZERO\n\n" @@ -188,6 +187,9 @@ i386_LDTR_Text: i386_TR_Text: .asciz " TR: " +i386FramesText: + .asciz "Frames:\n" + /* Set by each exception handler to the address of the description text */ i386ExceptionDescriptionText: .long 0 @@ -436,12 +438,38 @@ i386CommonExceptionHandler: movl $0,i386_ScreenPosX incl i386_ScreenPosY incl i386_ScreenPosY + call i386PrintFrames // Display frames + incl i386_ScreenPosY + incl i386_ScreenPosY i386ExceptionHandlerHang: jmp i386ExceptionHandlerHang iret +i386PrintFrames: + movl $0,i386_ScreenPosX + movl $i386FramesText,%esi + call i386PrintText + + movl i386_EBP,%edi +printnextframe: + test %edi,%edi + je nomoreframes + movl $STACK32ADDR,%eax + cmpl %edi,%eax + jbe nomoreframes + movl 4(%edi),%eax + pushl %edi + call i386PrintHexDword // Display frame + popl %edi + incl i386_ScreenPosX + incl i386_ScreenPosX + movl 0(%edi),%edi + jmp printnextframe +nomoreframes: + ret + /************************************************************************/ i386ClearScreenToBlue: .code32 diff --git a/freeldr/freeldr/include/arch.h b/freeldr/freeldr/include/arch.h index 20d3557f8bf..2e9ddfb7cf9 100644 --- a/freeldr/freeldr/include/arch.h +++ b/freeldr/freeldr/include/arch.h @@ -29,10 +29,6 @@ #define RMODE_DS 0x20 /* RMode data selector, base 0 limit 64k */ #define KERNEL_BASE 0xC0000000 -//#define USER_CS 0x08 -//#define USER_DS 0x10 -//#define KERNEL_CS 0x20 -//#define KERNEL_DS 0x28 #define KERNEL_CS 0x08 #define KERNEL_DS 0x10 diff --git a/freeldr/freeldr/include/version.h b/freeldr/freeldr/include/version.h index 5c826f48685..4ae5e7596b6 100644 --- a/freeldr/freeldr/include/version.h +++ b/freeldr/freeldr/include/version.h @@ -22,7 +22,7 @@ /* just some stuff */ -#define VERSION "FreeLoader v1.8.25" +#define VERSION "FreeLoader v1.8.26" #define COPYRIGHT "Copyright (C) 1998-2003 Brian Palmer " #define AUTHOR_EMAIL "" #define BY_AUTHOR "by Brian Palmer" @@ -36,7 +36,7 @@ // #define FREELOADER_MAJOR_VERSION 1 #define FREELOADER_MINOR_VERSION 8 -#define FREELOADER_PATCH_VERSION 25 +#define FREELOADER_PATCH_VERSION 26 #ifndef ASM