1993-09-29 13:21:49 +01:00
|
|
|
/*
|
|
|
|
* Wine debugger utility routines
|
|
|
|
* Eric Youngdale
|
|
|
|
* 9/93
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <stdio.h>
|
Release 941122
Sun Nov 20 18:30:06 1994 Alexandre Julliard (julliard@lamisun.epfl.ch)
* [controls/scroll.c] [include/scroll.h]
Rewritten most of scroll-bar code for better Windows look & feel.
Implemented EnableScrollBar().
Preliminary keyboard support.
* [objects/bitblt.c]
Fixed BadMatch error for BitBlt() and StretchBlt() when reading
bits from outside the visible region.
* [objects/oembitmap.c] [include/bitmaps/obm_*]
Use XPM symbolic colors to load bitmaps. This allows the colors
of the bitmaps to depend on the system colors.
* [tools/make_debug]
Made the make_debug script more robust.
* [windows/dialog.c]
Fixed CheckRadioButton().
* [windows/nonclient.c]
A few changes to scroll-bar drawing and tracking.
* [windows/winpos.c]
Renamed NextWindowFromPoint() to WINPOS_NextWindowFromPoint() to
avoid confusion, and optimized it somewhat.
Nov 19, 94 Martin Ayotte (wine@trgcorp.mksinfo.qc.ca)
* [misc/audio.c]
* [misc/mcianim.c]
more coding but nothing spectacular.
* [misc/mmaux.c]
some coding to access '/dev/mixer'.
* [misc/midi.c]
some coding to read .MID files, but it's not playing yet.
Sun Nov 13 19:31:03 1994 James Youngman (mbcstjy@afs.man.ac.uk)
* [objects/dib.c]
Reimplemented DIB_SetImageBits_RLE8() so that it would cope with
bitmaps which don't end 0x00, 0x02 (previously it blew up). This
includes some bitmaps output by Paint Shop Pro. Implementation is
possibly now too lax. Please see the notes on the function about
why.
* [controls/desktop.c]
The desktop pattern should be painted if the wallpaper doesn't
cover the whole screen width OR the whole screen height.
Sun Nov 13 00:07:11 MET 1994 Erik Bos <erik@xs4all.nl>
* [objects/dib.c]
Small bug in DIB_SetImageBits() fixed, bitmaps in 16,24 bpp
now work.
* [loader/ne_resource.c] [include/resource.h]
Some cleanup.
Thu Nov 10 20:44:58 1994 Martin von Loewis (martin@cs.csufresno.edu)
* [Configure]
[rc/sysres.rc]
Primitive compile-time support for multiple languages
* [rc/sysres_De.rc]
New file
* [loader/resource.c]
LoadBitmap: Recognize end of sysresbm properly
* [rc/Imakefile]
Rules to compile resources simplified, dependencies changed
* [rc/sysresbm.rc]
Don't use sysresbm if using XPM
* [windows/dialog.c]
CreateDialogIndirectParam: Reverse Z-order of controls
* [windows/message.c]
MSG_TranslateMouseMsg: Fix HTTRANSPARENT handling
* [windows/winpos.c]
NextWindowFromPoint: New function
* [controls/button.c]
WM_NCHITTEST: Group Box is HTTRANSPARENT
BUTTON_CheckAutoRadioButton: New function
BM_SETCHECK: Added call to BUTTON_CheckAutoRadioButton
Mon Nov 7 11:20:26 1994 Paul Falstad (pf@zoof.cts.com)
* [objects/text.c]
Fix hang when using DrawText(..., DT_WORDBREAK) with a word that
is too long to break.
* [objects/font.c]
Don't assume helvetica if there is no font family; let the other
font attributes decide what font to use.
* [controls/widgets.c]
Listboxes and combo boxes need to be notified of double-clicks.
* [controls/listbox.c]
[include/listbox.h]
scrolling to bottom of list box should display last item at the
bottom, not at the top.
list boxes need to allocate a separate heap for their item data,
rather than using the user heap. Otherwise, it's very easy to run
out of memory for list box items.
removed redundant code in ListBoxAddString(). Implemented simple
version of LBS_SORT.
Don't put [.] in the list box when using DDL_DIRECTORY.
* [controls/combo.c]
Combos should pass CBS_SORT onto their list box.
* [windows/win.c]
If window creation is aborted, remove the window from the
linked lists.
* [controls/static.c]
static controls with SS_ICON were always returning 0 from
WM_NCCREATE.
Make sure static controls have text to draw before drawing it.
1994-11-22 17:31:29 +01:00
|
|
|
#include <stdlib.h>
|
1994-05-18 20:29:32 +02:00
|
|
|
#include "opcodes/dis-asm.h"
|
1993-09-29 13:21:49 +01:00
|
|
|
#include "regpos.h"
|
|
|
|
|
|
|
|
extern int * regval;
|
|
|
|
extern unsigned int dbg_mask;
|
|
|
|
extern unsigned int dbg_mode;
|
|
|
|
|
1994-05-11 14:18:19 +02:00
|
|
|
void application_not_running()
|
|
|
|
{
|
|
|
|
fprintf(stderr,"Application not running\n");
|
|
|
|
}
|
|
|
|
|
1993-09-29 13:21:49 +01:00
|
|
|
void print_address(unsigned int addr, FILE * outfile){
|
|
|
|
char * name;
|
1994-05-18 20:29:32 +02:00
|
|
|
extern char * find_nearest_symbol(unsigned int *);
|
|
|
|
|
|
|
|
name = find_nearest_symbol((unsigned int *) addr);
|
1993-09-29 13:21:49 +01:00
|
|
|
if(name)
|
|
|
|
fprintf(outfile,"0x%8.8x(%s)", addr, name);
|
|
|
|
else
|
|
|
|
fprintf(outfile,"0x%8.8x", addr);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
1994-05-18 20:29:32 +02:00
|
|
|
void print_address_info(bfd_vma addr, disassemble_info * info){
|
|
|
|
print_address((unsigned int) addr, info->stream);
|
|
|
|
}
|
|
|
|
|
|
|
|
int print_insn(char *realmemaddr, char *memaddr, FILE *stream, int addrlen){
|
|
|
|
static disassemble_info info;
|
|
|
|
static int initialized = 0;
|
|
|
|
|
|
|
|
if (!initialized) {
|
|
|
|
INIT_DISASSEMBLE_INFO(info, stderr);
|
|
|
|
info.print_address_func = print_address_info;
|
|
|
|
initialized = 1;
|
|
|
|
}
|
|
|
|
info.stream = stream;
|
|
|
|
info.buffer = memaddr;
|
|
|
|
info.buffer_vma = (bfd_vma) realmemaddr;
|
|
|
|
info.buffer_length = 1024;
|
|
|
|
if (addrlen == 16)
|
|
|
|
return print_insn_i286((bfd_vma) realmemaddr, &info);
|
|
|
|
if (addrlen == 32)
|
|
|
|
return print_insn_i386((bfd_vma) realmemaddr, &info);
|
|
|
|
fprintf(stderr, "invalid address length %d.\n", addrlen);
|
|
|
|
return 0;
|
|
|
|
}
|
1993-09-29 13:21:49 +01:00
|
|
|
|
|
|
|
void info_reg(){
|
1994-05-11 14:18:19 +02:00
|
|
|
|
|
|
|
if(!regval) {
|
|
|
|
application_not_running();
|
1994-05-18 20:29:32 +02:00
|
|
|
return;
|
1994-05-11 14:18:19 +02:00
|
|
|
}
|
|
|
|
|
1993-09-29 13:21:49 +01:00
|
|
|
fprintf(stderr,"Register dump:\n");
|
|
|
|
/* First get the segment registers out of the way */
|
|
|
|
fprintf(stderr," CS:%4.4x SS:%4.4x DS:%4.4x ES:%4.4x GS:%4.4x FS:%4.4x\n",
|
|
|
|
SC_CS, SC_SS, SC_DS, SC_ES, SC_GS, SC_FS);
|
|
|
|
|
|
|
|
/* Now dump the main registers */
|
|
|
|
fprintf(stderr," EIP:%8.8x ESP:%8.8x EBP:%8.8x EFLAGS:%8.8x\n",
|
|
|
|
SC_EIP(dbg_mask), SC_ESP(dbg_mask), SC_EBP(dbg_mask), SC_EFLAGS);
|
|
|
|
|
|
|
|
/* And dump the regular registers */
|
|
|
|
|
|
|
|
fprintf(stderr," EAX:%8.8x EBX:%8.8x ECX:%8.8x EDX:%8.8x\n",
|
|
|
|
SC_EAX(dbg_mask), SC_EBX(dbg_mask), SC_ECX(dbg_mask), SC_EDX(dbg_mask));
|
|
|
|
|
|
|
|
/* Finally dump these main registers */
|
|
|
|
fprintf(stderr," EDI:%8.8x ESI:%8.8x\n",
|
|
|
|
SC_EDI(dbg_mask), SC_ESI(dbg_mask));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void info_stack(){
|
|
|
|
unsigned int * dump;
|
|
|
|
int i;
|
|
|
|
|
1994-05-11 14:18:19 +02:00
|
|
|
if(!regval) {
|
|
|
|
application_not_running();
|
1994-05-18 20:29:32 +02:00
|
|
|
return;
|
1994-05-11 14:18:19 +02:00
|
|
|
}
|
1993-09-29 13:21:49 +01:00
|
|
|
|
|
|
|
fprintf(stderr,"Stack dump:\n");
|
|
|
|
dump = (int*) SC_EIP(dbg_mask);
|
|
|
|
for(i=0; i<22; i++)
|
|
|
|
{
|
|
|
|
fprintf(stderr," %8.8x", *dump++);
|
|
|
|
if ((i % 8) == 7)
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
}
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void examine_memory(int addr, int count, char format){
|
|
|
|
char * pnt;
|
|
|
|
unsigned int * dump;
|
|
|
|
unsigned short int * wdump;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
if((addr & 0xffff0000) == 0 && dbg_mode == 16)
|
|
|
|
addr |= (format == 'i' ? SC_CS : SC_DS) << 16;
|
|
|
|
|
|
|
|
|
|
|
|
if(format != 'i' && count > 1) {
|
|
|
|
print_address(addr, stderr);
|
|
|
|
fprintf(stderr,": ");
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
switch(format){
|
|
|
|
case 's':
|
|
|
|
pnt = (char *) addr;
|
|
|
|
if (count == 1) count = 256;
|
|
|
|
while(*pnt && count) {
|
|
|
|
fputc( *pnt++, stderr);
|
|
|
|
count--;
|
|
|
|
};
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
return;
|
|
|
|
|
|
|
|
case 'i':
|
|
|
|
for(i=0; i<count; i++) {
|
|
|
|
print_address(addr, stderr);
|
|
|
|
fprintf(stderr,": ");
|
|
|
|
addr += print_insn((char *) addr, (char *) addr, stderr, dbg_mode);
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
};
|
|
|
|
return;
|
|
|
|
case 'x':
|
|
|
|
dump = (unsigned int *) addr;
|
|
|
|
for(i=0; i<count; i++)
|
|
|
|
{
|
|
|
|
fprintf(stderr," %8.8x", *dump++);
|
|
|
|
if ((i % 8) == 7) {
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
print_address((unsigned int) dump, stderr);
|
|
|
|
fprintf(stderr,": ");
|
|
|
|
};
|
|
|
|
}
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
return;
|
|
|
|
|
|
|
|
case 'd':
|
|
|
|
dump = (unsigned int *) addr;
|
|
|
|
for(i=0; i<count; i++)
|
|
|
|
{
|
|
|
|
fprintf(stderr," %d", *dump++);
|
|
|
|
if ((i % 8) == 7) {
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
print_address((unsigned int) dump, stderr);
|
|
|
|
fprintf(stderr,": ");
|
|
|
|
};
|
|
|
|
}
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
return;
|
|
|
|
|
|
|
|
case 'w':
|
|
|
|
wdump = (unsigned short int *) addr;
|
|
|
|
for(i=0; i<count; i++)
|
|
|
|
{
|
Release 0.4.7
Mon Nov 1 14:40:21 1993 julliard@di.epfl.ch (Alexandre Julliard)
* [if1632/user.spec]
Removed some duplicate entries.
* [include/dialog.h] [windows/dialog.c]
Implemented dialog units and fonts.
Added preliminary loading of dialog resources.
Preliminary implementation of DialogBox().
Implemented Get/SetDlgItem* functions.
* [windows/win.c]
Implemented WM_PARENTNOTIFY message.
Implemented CreateWindowEx() and GetWindow().
Completed DestroyWindow().
Mon Nov 1 18:19:34 1993 Erik Bos
* [loader/signal.c]
Added support for int 0x11 & 0x12.
* [loader/int21.c]
Improved function handling.
Sun Oct 31 12:38:09 1993 David Metcalfe <david@prism.demon.co.uk>
* [objects/font.c]
Implemented GetCharWidth().
Wed Oct 27 09:56:06 1993 John Brezak <brezak@ch.hp.com>
* [Makefile]
Use GNU malloc.
* [include/int21.h include/wine.h]
Change sc_eflags to sc_efl .
* [include/wine.h]
Fix misplaced #endif
Include <signal.h> for NetBSD
* [loader/int21.c]
Don't include <sys/vfs.h> in NetBSD
Do include <sys/mount.h> in NetBSD
Cleanup some lint.
Mon Oct 26 17:59:01 1993 Erik Bos
* [include/int21.h]
Added.
* [loader/int21.c]
Added support for many dos ints.
* [misc/file.c] [include/files.h]
Moved OPEN_MAX and DosDriveStruct to files.h.
Sun Oct 24 13:36:50 1993 David Metcalfe <david@prism.demon.co.uk>
* [controls/button.c]
Implemented CHECKBOX, AUTOCHECKBOX, 3STATE, AUTO3STATE,
RADIOBUTTON, AUTORADIOBUTTON, GROUPBOX controls, together with
a preliminary USERBUTTON control.
* [objects/text.c]
Corrected bugs in TEXT_NextLine() and added handling of prefix
character.
* [controls/button.c]
Disabled focus handling by commenting out SetFocus() calls until
serious bug can be found.
Oct 20, 93 martin2@trgcorp.solucorp.qc.ca (Martin Ayotte)
* [controls/listbox.c]
Listbox control window
Painting cleanup, new messages processed.
* [controls/scroll.c]
Scroll bar control window
Painting cleanup.
* [controls/combo.c]
Combo box control window
Painting cleanup.
Tue Oct 12 17:50:11 1993 julliard@di.epfl.ch (Alexandre Julliard)
* [objects/color.c] [objects/palette.c] [windows/syscolor.c]
Better support for the private color map.
Using a private map is now the default.
* [windows/win.c]
Bug fix.
* [include/dialog.h] [windows/dialog.c]
Implemented CreateDialog*() and IsDialogMessage().
* [misc/xt.c] [windows/defwnd.c]
Moved DefWindowProc() to defwnd.c.
Added WM_NCCREATE, WM_NCDESTROY and WM_CTLCOLOR handling.
* [windows/defdlg.c]
Started the implementation of DefDlgProc().
* [windows/win.c]
Added WM_NCCREATE and WM_NCDESTROY messages.
Implemented IsChild().
Tue Oct 12 17:50:20 1993 David Metcalfe <david@prism.demon.co.uk>
* [windows/focus.c]
Implemented GetFocus() and SetFocus().
* [windows/event.c]
Added processing of FocusIn and FocusOut events.
* [windows/graphics.c]
Added DrawFocusRect().
Sat Oct 9 14:36:57 1993 Erik Bos
* [loader/int1a.c]
Added more function handling.
Wed Oct 6 12:21:22 1993 Erik Bos
* [loader/signal.c]
Split signal.c into int1a.c, int21.c and signal.c.
Tue Oct 5 22:12:40 1993 David Metcalfe
* [controls/static.c] [control/widgets.c]
Static control class.
* [objects/text.c]
Added processing of additional DT_ flags to DrawText().
* [windows/win.c] [misc/xt.c]
Added SetWindowText() and WM_SETTEXT processing.
Tue Oct 5 22:12:40 1993 Martin Ayotte
* [controls/listbox.c]
Listbox control window
* [controls/scroll.c]
Scroll bar control window
* [controls/combo.c]
Combo box control window
* [include/combo.h]
Combo box definitions
* [include/listbox.h]
Listbox definitions
* [include/scroll.h]
Scroll bar definitions
Sat Oct 2 09:35:54 1993 Bob Amstadt (bob at pooh)
* [if1632/callback.c]
Fixed bug in MakeProcInstance().
* [debugger/info.c]
Changed x/w and x/b to display in hex.
* [debugger/i386-pinsn.c]
Added code to properly unassemble 16-bit indexing.
Fri Oct 1 08:29:05 1993 Bob Amstadt (bob at pooh)
* [loader/files.c] [misc/profile.c]
System initialization file is now called "wine.ini" and can
be located in the current directory, the user's home directory,
or any directories specified in the WINEPATH environment variable.
* [tools/build.c] [if1632/call.S] [include/regfunc.h]
Changed register function stack to match sigcontext structure.
Thu Sep 30 22:30:21 1993 Bob Amstadt (bob at pooh)
* [loader/files.c]
Created function to search a path for files to load.
* [loader/wine.c]
Modified exe and dll file loading to search through path
specified by the environment variable WINEPATH.
Thu Sep 30 22:30:21 1993 Eric Youngdale
* [loader/signal.c]
Bug fix.
Thu Sep 30 22:30:21 1993 John Brezak
* [debugger/dbg.y] [debugger/debug.l] [debugger/dtest.c]
[debugger/obstack.h]
Updates to allow debugger to function under NetBSD.
1993-11-03 20:23:37 +01:00
|
|
|
fprintf(stderr," %x", *wdump++);
|
1993-09-29 13:21:49 +01:00
|
|
|
if ((i % 10) == 7) {
|
|
|
|
fprintf(stderr,"\n");
|
Release 0.4.7
Mon Nov 1 14:40:21 1993 julliard@di.epfl.ch (Alexandre Julliard)
* [if1632/user.spec]
Removed some duplicate entries.
* [include/dialog.h] [windows/dialog.c]
Implemented dialog units and fonts.
Added preliminary loading of dialog resources.
Preliminary implementation of DialogBox().
Implemented Get/SetDlgItem* functions.
* [windows/win.c]
Implemented WM_PARENTNOTIFY message.
Implemented CreateWindowEx() and GetWindow().
Completed DestroyWindow().
Mon Nov 1 18:19:34 1993 Erik Bos
* [loader/signal.c]
Added support for int 0x11 & 0x12.
* [loader/int21.c]
Improved function handling.
Sun Oct 31 12:38:09 1993 David Metcalfe <david@prism.demon.co.uk>
* [objects/font.c]
Implemented GetCharWidth().
Wed Oct 27 09:56:06 1993 John Brezak <brezak@ch.hp.com>
* [Makefile]
Use GNU malloc.
* [include/int21.h include/wine.h]
Change sc_eflags to sc_efl .
* [include/wine.h]
Fix misplaced #endif
Include <signal.h> for NetBSD
* [loader/int21.c]
Don't include <sys/vfs.h> in NetBSD
Do include <sys/mount.h> in NetBSD
Cleanup some lint.
Mon Oct 26 17:59:01 1993 Erik Bos
* [include/int21.h]
Added.
* [loader/int21.c]
Added support for many dos ints.
* [misc/file.c] [include/files.h]
Moved OPEN_MAX and DosDriveStruct to files.h.
Sun Oct 24 13:36:50 1993 David Metcalfe <david@prism.demon.co.uk>
* [controls/button.c]
Implemented CHECKBOX, AUTOCHECKBOX, 3STATE, AUTO3STATE,
RADIOBUTTON, AUTORADIOBUTTON, GROUPBOX controls, together with
a preliminary USERBUTTON control.
* [objects/text.c]
Corrected bugs in TEXT_NextLine() and added handling of prefix
character.
* [controls/button.c]
Disabled focus handling by commenting out SetFocus() calls until
serious bug can be found.
Oct 20, 93 martin2@trgcorp.solucorp.qc.ca (Martin Ayotte)
* [controls/listbox.c]
Listbox control window
Painting cleanup, new messages processed.
* [controls/scroll.c]
Scroll bar control window
Painting cleanup.
* [controls/combo.c]
Combo box control window
Painting cleanup.
Tue Oct 12 17:50:11 1993 julliard@di.epfl.ch (Alexandre Julliard)
* [objects/color.c] [objects/palette.c] [windows/syscolor.c]
Better support for the private color map.
Using a private map is now the default.
* [windows/win.c]
Bug fix.
* [include/dialog.h] [windows/dialog.c]
Implemented CreateDialog*() and IsDialogMessage().
* [misc/xt.c] [windows/defwnd.c]
Moved DefWindowProc() to defwnd.c.
Added WM_NCCREATE, WM_NCDESTROY and WM_CTLCOLOR handling.
* [windows/defdlg.c]
Started the implementation of DefDlgProc().
* [windows/win.c]
Added WM_NCCREATE and WM_NCDESTROY messages.
Implemented IsChild().
Tue Oct 12 17:50:20 1993 David Metcalfe <david@prism.demon.co.uk>
* [windows/focus.c]
Implemented GetFocus() and SetFocus().
* [windows/event.c]
Added processing of FocusIn and FocusOut events.
* [windows/graphics.c]
Added DrawFocusRect().
Sat Oct 9 14:36:57 1993 Erik Bos
* [loader/int1a.c]
Added more function handling.
Wed Oct 6 12:21:22 1993 Erik Bos
* [loader/signal.c]
Split signal.c into int1a.c, int21.c and signal.c.
Tue Oct 5 22:12:40 1993 David Metcalfe
* [controls/static.c] [control/widgets.c]
Static control class.
* [objects/text.c]
Added processing of additional DT_ flags to DrawText().
* [windows/win.c] [misc/xt.c]
Added SetWindowText() and WM_SETTEXT processing.
Tue Oct 5 22:12:40 1993 Martin Ayotte
* [controls/listbox.c]
Listbox control window
* [controls/scroll.c]
Scroll bar control window
* [controls/combo.c]
Combo box control window
* [include/combo.h]
Combo box definitions
* [include/listbox.h]
Listbox definitions
* [include/scroll.h]
Scroll bar definitions
Sat Oct 2 09:35:54 1993 Bob Amstadt (bob at pooh)
* [if1632/callback.c]
Fixed bug in MakeProcInstance().
* [debugger/info.c]
Changed x/w and x/b to display in hex.
* [debugger/i386-pinsn.c]
Added code to properly unassemble 16-bit indexing.
Fri Oct 1 08:29:05 1993 Bob Amstadt (bob at pooh)
* [loader/files.c] [misc/profile.c]
System initialization file is now called "wine.ini" and can
be located in the current directory, the user's home directory,
or any directories specified in the WINEPATH environment variable.
* [tools/build.c] [if1632/call.S] [include/regfunc.h]
Changed register function stack to match sigcontext structure.
Thu Sep 30 22:30:21 1993 Bob Amstadt (bob at pooh)
* [loader/files.c]
Created function to search a path for files to load.
* [loader/wine.c]
Modified exe and dll file loading to search through path
specified by the environment variable WINEPATH.
Thu Sep 30 22:30:21 1993 Eric Youngdale
* [loader/signal.c]
Bug fix.
Thu Sep 30 22:30:21 1993 John Brezak
* [debugger/dbg.y] [debugger/debug.l] [debugger/dtest.c]
[debugger/obstack.h]
Updates to allow debugger to function under NetBSD.
1993-11-03 20:23:37 +01:00
|
|
|
print_address((unsigned int) wdump, stderr);
|
1993-09-29 13:21:49 +01:00
|
|
|
fprintf(stderr,": ");
|
|
|
|
};
|
|
|
|
}
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
return;
|
|
|
|
|
|
|
|
case 'c':
|
|
|
|
pnt = (char *) addr;
|
|
|
|
for(i=0; i<count; i++)
|
|
|
|
{
|
|
|
|
if(*pnt < 0x20) {
|
|
|
|
fprintf(stderr," ");
|
|
|
|
pnt++;
|
|
|
|
} else
|
|
|
|
fprintf(stderr," %c", *pnt++);
|
|
|
|
if ((i % 32) == 7) {
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
print_address((unsigned int) dump, stderr);
|
|
|
|
fprintf(stderr,": ");
|
|
|
|
};
|
|
|
|
}
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
return;
|
|
|
|
|
|
|
|
case 'b':
|
|
|
|
pnt = (char *) addr;
|
|
|
|
for(i=0; i<count; i++)
|
|
|
|
{
|
1994-12-10 14:02:28 +01:00
|
|
|
fprintf(stderr," %02x", (*pnt++) & 0xff);
|
1993-09-29 13:21:49 +01:00
|
|
|
if ((i % 32) == 7) {
|
|
|
|
fprintf(stderr,"\n");
|
Release 0.4.7
Mon Nov 1 14:40:21 1993 julliard@di.epfl.ch (Alexandre Julliard)
* [if1632/user.spec]
Removed some duplicate entries.
* [include/dialog.h] [windows/dialog.c]
Implemented dialog units and fonts.
Added preliminary loading of dialog resources.
Preliminary implementation of DialogBox().
Implemented Get/SetDlgItem* functions.
* [windows/win.c]
Implemented WM_PARENTNOTIFY message.
Implemented CreateWindowEx() and GetWindow().
Completed DestroyWindow().
Mon Nov 1 18:19:34 1993 Erik Bos
* [loader/signal.c]
Added support for int 0x11 & 0x12.
* [loader/int21.c]
Improved function handling.
Sun Oct 31 12:38:09 1993 David Metcalfe <david@prism.demon.co.uk>
* [objects/font.c]
Implemented GetCharWidth().
Wed Oct 27 09:56:06 1993 John Brezak <brezak@ch.hp.com>
* [Makefile]
Use GNU malloc.
* [include/int21.h include/wine.h]
Change sc_eflags to sc_efl .
* [include/wine.h]
Fix misplaced #endif
Include <signal.h> for NetBSD
* [loader/int21.c]
Don't include <sys/vfs.h> in NetBSD
Do include <sys/mount.h> in NetBSD
Cleanup some lint.
Mon Oct 26 17:59:01 1993 Erik Bos
* [include/int21.h]
Added.
* [loader/int21.c]
Added support for many dos ints.
* [misc/file.c] [include/files.h]
Moved OPEN_MAX and DosDriveStruct to files.h.
Sun Oct 24 13:36:50 1993 David Metcalfe <david@prism.demon.co.uk>
* [controls/button.c]
Implemented CHECKBOX, AUTOCHECKBOX, 3STATE, AUTO3STATE,
RADIOBUTTON, AUTORADIOBUTTON, GROUPBOX controls, together with
a preliminary USERBUTTON control.
* [objects/text.c]
Corrected bugs in TEXT_NextLine() and added handling of prefix
character.
* [controls/button.c]
Disabled focus handling by commenting out SetFocus() calls until
serious bug can be found.
Oct 20, 93 martin2@trgcorp.solucorp.qc.ca (Martin Ayotte)
* [controls/listbox.c]
Listbox control window
Painting cleanup, new messages processed.
* [controls/scroll.c]
Scroll bar control window
Painting cleanup.
* [controls/combo.c]
Combo box control window
Painting cleanup.
Tue Oct 12 17:50:11 1993 julliard@di.epfl.ch (Alexandre Julliard)
* [objects/color.c] [objects/palette.c] [windows/syscolor.c]
Better support for the private color map.
Using a private map is now the default.
* [windows/win.c]
Bug fix.
* [include/dialog.h] [windows/dialog.c]
Implemented CreateDialog*() and IsDialogMessage().
* [misc/xt.c] [windows/defwnd.c]
Moved DefWindowProc() to defwnd.c.
Added WM_NCCREATE, WM_NCDESTROY and WM_CTLCOLOR handling.
* [windows/defdlg.c]
Started the implementation of DefDlgProc().
* [windows/win.c]
Added WM_NCCREATE and WM_NCDESTROY messages.
Implemented IsChild().
Tue Oct 12 17:50:20 1993 David Metcalfe <david@prism.demon.co.uk>
* [windows/focus.c]
Implemented GetFocus() and SetFocus().
* [windows/event.c]
Added processing of FocusIn and FocusOut events.
* [windows/graphics.c]
Added DrawFocusRect().
Sat Oct 9 14:36:57 1993 Erik Bos
* [loader/int1a.c]
Added more function handling.
Wed Oct 6 12:21:22 1993 Erik Bos
* [loader/signal.c]
Split signal.c into int1a.c, int21.c and signal.c.
Tue Oct 5 22:12:40 1993 David Metcalfe
* [controls/static.c] [control/widgets.c]
Static control class.
* [objects/text.c]
Added processing of additional DT_ flags to DrawText().
* [windows/win.c] [misc/xt.c]
Added SetWindowText() and WM_SETTEXT processing.
Tue Oct 5 22:12:40 1993 Martin Ayotte
* [controls/listbox.c]
Listbox control window
* [controls/scroll.c]
Scroll bar control window
* [controls/combo.c]
Combo box control window
* [include/combo.h]
Combo box definitions
* [include/listbox.h]
Listbox definitions
* [include/scroll.h]
Scroll bar definitions
Sat Oct 2 09:35:54 1993 Bob Amstadt (bob at pooh)
* [if1632/callback.c]
Fixed bug in MakeProcInstance().
* [debugger/info.c]
Changed x/w and x/b to display in hex.
* [debugger/i386-pinsn.c]
Added code to properly unassemble 16-bit indexing.
Fri Oct 1 08:29:05 1993 Bob Amstadt (bob at pooh)
* [loader/files.c] [misc/profile.c]
System initialization file is now called "wine.ini" and can
be located in the current directory, the user's home directory,
or any directories specified in the WINEPATH environment variable.
* [tools/build.c] [if1632/call.S] [include/regfunc.h]
Changed register function stack to match sigcontext structure.
Thu Sep 30 22:30:21 1993 Bob Amstadt (bob at pooh)
* [loader/files.c]
Created function to search a path for files to load.
* [loader/wine.c]
Modified exe and dll file loading to search through path
specified by the environment variable WINEPATH.
Thu Sep 30 22:30:21 1993 Eric Youngdale
* [loader/signal.c]
Bug fix.
Thu Sep 30 22:30:21 1993 John Brezak
* [debugger/dbg.y] [debugger/debug.l] [debugger/dtest.c]
[debugger/obstack.h]
Updates to allow debugger to function under NetBSD.
1993-11-03 20:23:37 +01:00
|
|
|
print_address((unsigned int) pnt, stderr);
|
1993-09-29 13:21:49 +01:00
|
|
|
fprintf(stderr,": ");
|
|
|
|
};
|
|
|
|
}
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
return;
|
|
|
|
};
|
|
|
|
|
|
|
|
/* The rest are fairly straightforward */
|
|
|
|
|
|
|
|
fprintf(stderr,"examine mem: %x %d %c\n", addr, count, format);
|
|
|
|
}
|
|
|
|
|
|
|
|
char * helptext[] = {
|
|
|
|
"The commands accepted by the Wine debugger are a small subset",
|
|
|
|
"of the commands that gdb would accept. The commands currently",
|
|
|
|
"are:\n",
|
1994-05-11 14:18:19 +02:00
|
|
|
" info [reg,stack,break]",
|
Release 940602
Sat May 28 12:03:23 1994 Bob Amstadt (bob@pooh)
* miscemu/int21.c (OpenExistingFile):
OpenExistingFile needed to return handle in AX register instead
of the BX register.
* miscemu/int21.c (ioctlGetDeviceInfo):
Added a little code to give a fake result for normal files.
Wed May 25 21:55:38 1994 Bob Amstadt (bob@pooh)
* [memory/global.c]
return value from GlobalSize was completely wrong.
* [miscemu/int21.h]
fixed bug in FindFirst. Directory pointer (dp) was not placed in
dta correctly.
* [tools/build.c]
fixed creation of pop.h to guarantee that flags are restored correctly.
* [misc/comm.c]
changed all occurance of strncmp() to strncasecmp().
BuildCommDCB() should not require that OpenComm() be called first.
* [loader/selector.c]
Heap initialized to size of full segment less stack size and
automatic data size.
Sat May 28 09:14:33 1994 Rick Sladkey (jrs@world.std.com)
* [controls/listbox.c]
Correct typos in ListBoxResetContent where lpls variable is
used where lsls2 variable is meant. Don't call USER_HEAP_FREE
twice on the same handle if hData and hMem are the same.
* [debugger/opcodes/i386-dis.c]
Add new name array names_rmw for table driven decoding of the
16-bit mod/rm field. Omit large case statement in OP_E and
replace with array reference to match existing coding style.
Add new static variable machine with value 286 or 386 to
correctly decode mod/rm field in either 16 or 32 bit modes.
Set it in print_insn_i{2,3}86. In OP_E use it to decide how
to decode mod/rm. While the code was correct for 16 bit code,
it was improperly decoding mod/rm fields on word prefixed
32 bit instructions.
* [debugger/debug.l]
Recognize new token ABORT. Recognize single letters 'p'
and 'q' as tokens.
* [debugger/dbg.y]
Add new token ABORT. Allow print command to be invoked by
'p' and quit command by 'q', ala GDB. Change lots of '};'
to just '}'. Add static dummy_regs to wine_debug so that
wine_debug(0, NULL) doesn't core dump with qmagic.
* [debugger/info.c]
Correct syntax of break command in helptext and omit former
comment about probable bugginess of the disassembly since it
is now correct. Change fprintf of first backtrace stack
frame to match that of the second and subsequent frames.
* [loader/selector.c]
Change construction of command line in CreatePSP from creating
a string that looks like "arg1 arg2 \r" to "arg1 arg2". A DOS
PSP command line looks like " arg1 arg2\r" with the length not
including the trailing "\r" but that is not how Windows does it.
* [loader/library.c]
Change uses of %s to print strings in GetModuleHandle to %x so
that string IDs don't cause a core dump with qmagic. Handle
converting a string id to a literal module handle. For
example, GetModuleHandle((LPSTR) 0x57) now returns 0x57 if
it is a real module handle.
* [misc/message.c]
In MessageBox, translate a NULL title argument to the string "Error".
* [misc/profile.c]
In GetSetProfile translate a NULL Default argument to "". Any
caller whose Default argument is NULL is buggy, but CHARMAP does it
anyway.
* [objects/font.c]
Add NULL pointer checks in EnumFontFamilies to prevent core dumps.
Sat May 28 20:01:51 1994 Jon Tombs (jon@gtex02.us.es)
* New options/resourses nosaveunders and nobackingstore. By
default backingstore and saveunders are now enabled, these use
more memory but avoids those slow (sometimes multiple) redraws
caused be exposure events.
May 30, 94 martin2@trgcorp.solucorp.qc.ca (Martin Ayotte)
* [misc/driver.c] New file
Skeleton for 'Installable Wine Drivers' functions. :-)
* [misc/audio.c] New file
Skeleton for basic 'Audio Driver' functions.
* [misc/network.c] New file
Stubs for few networking functions.
* [misc/mmsystem.c]
More coding ... a dust in a galaxy ...
* [misc/shell.c]
Some coding for 'RegXXX' functions ... a dust in the wind ...
* [misc/profile.c]
Bug fix in GetSetProfile(), bad enumeration if KeyName == NULL.
* [objects/gdi.c]
New function CreateDiscardableBitmap(), it just calling
CreateCompatibleBitmap() for now. It's get 'clock.exe' running ! :-)
* [controls/listbox.c]
* [controls/combo.c]
New font member assigned to SYSTEM_FONT as default.
Added processing for WM_SETFONT message;
Tue May 31 20:34:25 EDT 1994 John Richardson <jrichard@cs.uml.edu>
* [windows/event.c]
Added AsyncMouseButtonsStates array for GetAsyncKeyState.
* [windows/keyboard.c]
Implemented beginning of GetAsyncKeyState.
Wed May 25 23:35:03 1994 David Metcalfe <david@prism.demon.co.uk>
* [objects/metafile.c] [include/metafile.h]
[windows/mapping.c] [objects/clipping.c] [objects/bitblt.c]
[windows/dc.c]
Further metafile support.
1994-06-03 00:38:20 +02:00
|
|
|
" break *<addr>",
|
1994-05-11 14:18:19 +02:00
|
|
|
" enable bpnum",
|
|
|
|
" disable bpnum",
|
1993-09-29 13:21:49 +01:00
|
|
|
" help",
|
|
|
|
" quit",
|
|
|
|
" print <expr>",
|
1994-05-11 14:18:19 +02:00
|
|
|
" bt",
|
|
|
|
" mode [16,32]",
|
1993-09-29 13:21:49 +01:00
|
|
|
" symbolfile <filename>",
|
|
|
|
" define <identifier> <expr>",
|
|
|
|
" x <expr>",
|
|
|
|
" cont",
|
|
|
|
" set <reg> = <expr>",
|
|
|
|
" set *<expr> = <expr>",
|
|
|
|
"",
|
|
|
|
"The 'x' command accepts repeat counts and formats (including 'i') in the",
|
|
|
|
"same way that gdb does.",
|
|
|
|
"",
|
|
|
|
" The following are examples of legal expressions:",
|
|
|
|
" $eax $eax+0x3 0x1000 ($eip + 256) *$eax *($esp + 3)",
|
|
|
|
" Also, a nm format symbol table can be read from a file using the",
|
|
|
|
" symbolfile command. Symbols can also be defined individually with",
|
|
|
|
" the define command.",
|
|
|
|
"",
|
|
|
|
NULL};
|
|
|
|
|
|
|
|
void dbg_help(){
|
|
|
|
int i;
|
|
|
|
i = 0;
|
|
|
|
while(helptext[i]) fprintf(stderr,"%s\n", helptext[i++]);
|
|
|
|
}
|
|
|
|
|
1994-05-11 14:18:19 +02:00
|
|
|
|
|
|
|
struct frame{
|
|
|
|
union{
|
|
|
|
struct {
|
|
|
|
unsigned short saved_bp;
|
|
|
|
unsigned short saved_ip;
|
|
|
|
unsigned short saved_cs;
|
|
|
|
} win16;
|
|
|
|
struct {
|
|
|
|
unsigned long saved_bp;
|
|
|
|
unsigned long saved_ip;
|
|
|
|
unsigned short saved_cs;
|
|
|
|
} win32;
|
|
|
|
} u;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
void dbg_bt(){
|
|
|
|
struct frame * frame;
|
|
|
|
unsigned short cs;
|
|
|
|
int frameno = 0;
|
|
|
|
|
|
|
|
if(!regval) {
|
|
|
|
application_not_running();
|
1994-05-18 20:29:32 +02:00
|
|
|
return;
|
1994-05-11 14:18:19 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
fprintf(stderr,"Backtrace:\n");
|
1994-10-17 19:12:41 +01:00
|
|
|
fprintf(stderr,"%d ",frameno);
|
|
|
|
print_address(frame->u.win32.saved_ip,stderr);
|
1994-05-11 14:18:19 +02:00
|
|
|
cs = SC_CS;
|
|
|
|
|
|
|
|
frame = (struct frame *) ((SC_EBP(dbg_mask) & ~1) | (SC_SS << 16));
|
|
|
|
while((cs & 3) == 3) {
|
|
|
|
/* See if in 32 bit mode or not. Assume GDT means 32 bit. */
|
|
|
|
if ((cs & 7) != 7) {
|
1994-10-17 19:12:41 +01:00
|
|
|
void CallTo32();
|
|
|
|
fprintf(stderr,"\n%d ",frameno++);
|
|
|
|
print_address(frame->u.win32.saved_ip,stderr);
|
|
|
|
if(frame->u.win32.saved_ip<((char*)CallTo32+1000))break;
|
1994-05-11 14:18:19 +02:00
|
|
|
frame = (struct frame *) frame->u.win32.saved_bp;
|
|
|
|
} else {
|
|
|
|
cs = frame->u.win16.saved_cs;
|
|
|
|
fprintf(stderr,"%d %4.4x:%4.4x\n", frameno++, cs,
|
|
|
|
frame->u.win16.saved_ip);
|
|
|
|
frame = (struct frame *) ((frame->u.win16.saved_bp & ~1) |
|
|
|
|
(SC_SS << 16));
|
|
|
|
}
|
|
|
|
}
|
1994-10-17 19:12:41 +01:00
|
|
|
putchar('\n');
|
1994-05-11 14:18:19 +02:00
|
|
|
}
|
|
|
|
|