1993-09-29 12:21:49 +00: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 16:31:29 +00:00
|
|
|
#include <stdlib.h>
|
1995-03-19 17:39:39 +00:00
|
|
|
#include "ldt.h"
|
1995-01-24 16:21:01 +00:00
|
|
|
#include "db_disasm.h"
|
1993-09-29 12:21:49 +00:00
|
|
|
#include "regpos.h"
|
|
|
|
|
|
|
|
extern int * regval;
|
|
|
|
extern unsigned int dbg_mask;
|
|
|
|
extern unsigned int dbg_mode;
|
|
|
|
|
1994-05-11 12:18:19 +00:00
|
|
|
void application_not_running()
|
|
|
|
{
|
|
|
|
fprintf(stderr,"Application not running\n");
|
|
|
|
}
|
|
|
|
|
1995-03-19 17:39:39 +00:00
|
|
|
void print_address(unsigned int addr, FILE * outfile, int addrlen)
|
|
|
|
{
|
|
|
|
if (addrlen == 16)
|
|
|
|
{
|
|
|
|
fprintf( outfile, "%4.4x:%4.4x", addr >> 16, addr & 0xffff );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
extern char * find_nearest_symbol(unsigned int *);
|
1994-05-18 18:29:32 +00:00
|
|
|
|
1995-03-19 17:39:39 +00:00
|
|
|
char * name = find_nearest_symbol((unsigned int *) addr);
|
1993-09-29 12:21:49 +00:00
|
|
|
if(name)
|
|
|
|
fprintf(outfile,"0x%8.8x(%s)", addr, name);
|
|
|
|
else
|
|
|
|
fprintf(outfile,"0x%8.8x", addr);
|
1995-03-19 17:39:39 +00:00
|
|
|
}
|
1995-01-24 16:21:01 +00:00
|
|
|
}
|
|
|
|
|
1993-09-29 12:21:49 +00:00
|
|
|
|
|
|
|
void info_reg(){
|
1994-05-11 12:18:19 +00:00
|
|
|
|
|
|
|
if(!regval) {
|
|
|
|
application_not_running();
|
1994-05-18 18:29:32 +00:00
|
|
|
return;
|
1994-05-11 12:18:19 +00:00
|
|
|
}
|
|
|
|
|
1993-09-29 12:21:49 +00: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 12:18:19 +00:00
|
|
|
if(!regval) {
|
|
|
|
application_not_running();
|
1994-05-18 18:29:32 +00:00
|
|
|
return;
|
1994-05-11 12:18:19 +00:00
|
|
|
}
|
1993-09-29 12:21:49 +00: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)
|
1995-03-19 17:39:39 +00:00
|
|
|
addr |= (format == 'i' ? SC_CS : SC_DS) << 16;
|
1993-09-29 12:21:49 +00:00
|
|
|
|
|
|
|
if(format != 'i' && count > 1) {
|
1995-03-19 17:39:39 +00:00
|
|
|
print_address(addr, stderr, dbg_mode);
|
1993-09-29 12:21:49 +00:00
|
|
|
fprintf(stderr,": ");
|
|
|
|
};
|
|
|
|
|
|
|
|
switch(format){
|
|
|
|
case 's':
|
1995-03-19 17:39:39 +00:00
|
|
|
pnt = dbg_mode == 16 ? (char *)PTR_SEG_TO_LIN(addr)
|
|
|
|
: (char *)addr;
|
1993-09-29 12:21:49 +00:00
|
|
|
if (count == 1) count = 256;
|
|
|
|
while(*pnt && count) {
|
|
|
|
fputc( *pnt++, stderr);
|
|
|
|
count--;
|
|
|
|
};
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
return;
|
|
|
|
|
|
|
|
case 'i':
|
|
|
|
for(i=0; i<count; i++) {
|
1995-03-19 17:39:39 +00:00
|
|
|
print_address(addr, stderr, dbg_mode);
|
1993-09-29 12:21:49 +00:00
|
|
|
fprintf(stderr,": ");
|
1995-03-19 17:39:39 +00:00
|
|
|
addr = db_disasm( addr, 0, (dbg_mode == 16) );
|
1993-09-29 12:21:49 +00:00
|
|
|
fprintf(stderr,"\n");
|
|
|
|
};
|
|
|
|
return;
|
|
|
|
case 'x':
|
1995-03-19 17:39:39 +00:00
|
|
|
dump = dbg_mode == 16 ? (unsigned int *)PTR_SEG_TO_LIN(addr)
|
|
|
|
: (unsigned int *)addr;
|
1993-09-29 12:21:49 +00:00
|
|
|
for(i=0; i<count; i++)
|
|
|
|
{
|
|
|
|
fprintf(stderr," %8.8x", *dump++);
|
1995-03-19 17:39:39 +00:00
|
|
|
addr += 4;
|
1993-09-29 12:21:49 +00:00
|
|
|
if ((i % 8) == 7) {
|
|
|
|
fprintf(stderr,"\n");
|
1995-03-19 17:39:39 +00:00
|
|
|
print_address(addr, stderr, dbg_mode);
|
1993-09-29 12:21:49 +00:00
|
|
|
fprintf(stderr,": ");
|
|
|
|
};
|
|
|
|
}
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
return;
|
|
|
|
|
|
|
|
case 'd':
|
1995-03-19 17:39:39 +00:00
|
|
|
dump = dbg_mode == 16 ? (unsigned int *)PTR_SEG_TO_LIN(addr)
|
|
|
|
: (unsigned int *)addr;
|
1993-09-29 12:21:49 +00:00
|
|
|
for(i=0; i<count; i++)
|
|
|
|
{
|
|
|
|
fprintf(stderr," %d", *dump++);
|
1995-03-19 17:39:39 +00:00
|
|
|
addr += 4;
|
1993-09-29 12:21:49 +00:00
|
|
|
if ((i % 8) == 7) {
|
|
|
|
fprintf(stderr,"\n");
|
1995-03-19 17:39:39 +00:00
|
|
|
print_address(addr, stderr, dbg_mode);
|
1993-09-29 12:21:49 +00:00
|
|
|
fprintf(stderr,": ");
|
|
|
|
};
|
|
|
|
}
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
return;
|
|
|
|
|
|
|
|
case 'w':
|
1995-03-19 17:39:39 +00:00
|
|
|
wdump = dbg_mode == 16 ? (unsigned short *)PTR_SEG_TO_LIN(addr)
|
|
|
|
: (unsigned short *)addr;
|
1993-09-29 12:21:49 +00:00
|
|
|
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 19:23:37 +00:00
|
|
|
fprintf(stderr," %x", *wdump++);
|
1995-03-19 17:39:39 +00:00
|
|
|
addr += 2;
|
1993-09-29 12:21:49 +00:00
|
|
|
if ((i % 10) == 7) {
|
|
|
|
fprintf(stderr,"\n");
|
1995-03-19 17:39:39 +00:00
|
|
|
print_address(addr, stderr, dbg_mode);
|
1993-09-29 12:21:49 +00:00
|
|
|
fprintf(stderr,": ");
|
|
|
|
};
|
|
|
|
}
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
return;
|
|
|
|
|
|
|
|
case 'c':
|
1995-03-19 17:39:39 +00:00
|
|
|
pnt = dbg_mode == 16 ? (char *)PTR_SEG_TO_LIN(addr)
|
|
|
|
: (char *)addr;
|
1993-09-29 12:21:49 +00:00
|
|
|
for(i=0; i<count; i++)
|
|
|
|
{
|
|
|
|
if(*pnt < 0x20) {
|
|
|
|
fprintf(stderr," ");
|
|
|
|
pnt++;
|
|
|
|
} else
|
|
|
|
fprintf(stderr," %c", *pnt++);
|
1995-03-19 17:39:39 +00:00
|
|
|
addr++;
|
1993-09-29 12:21:49 +00:00
|
|
|
if ((i % 32) == 7) {
|
|
|
|
fprintf(stderr,"\n");
|
1995-03-19 17:39:39 +00:00
|
|
|
print_address(addr, stderr, dbg_mode);
|
1993-09-29 12:21:49 +00:00
|
|
|
fprintf(stderr,": ");
|
|
|
|
};
|
|
|
|
}
|
|
|
|
fprintf(stderr,"\n");
|
|
|
|
return;
|
|
|
|
|
|
|
|
case 'b':
|
1995-03-19 17:39:39 +00:00
|
|
|
pnt = dbg_mode == 16 ? (char *)PTR_SEG_TO_LIN(addr)
|
|
|
|
: (char *)addr;
|
1993-09-29 12:21:49 +00:00
|
|
|
for(i=0; i<count; i++)
|
|
|
|
{
|
1994-12-10 13:02:28 +00:00
|
|
|
fprintf(stderr," %02x", (*pnt++) & 0xff);
|
1995-03-19 17:39:39 +00:00
|
|
|
addr++;
|
1993-09-29 12:21:49 +00:00
|
|
|
if ((i % 32) == 7) {
|
|
|
|
fprintf(stderr,"\n");
|
1995-03-19 17:39:39 +00:00
|
|
|
print_address(addr, stderr, dbg_mode);
|
1993-09-29 12:21:49 +00: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",
|
1995-01-24 16:21:01 +00:00
|
|
|
" break *<addr> bt",
|
|
|
|
" disable bpnum enable bpnum",
|
|
|
|
" help quit",
|
|
|
|
" x <expr> cont",
|
|
|
|
" mode [16,32] print <expr>",
|
|
|
|
" set <reg> = <expr> set *<expr> = <expr>",
|
|
|
|
" info [reg,stack,break,segments] symbolfile <filename>",
|
1993-09-29 12:21:49 +00:00
|
|
|
" define <identifier> <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 12:18:19 +00: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 18:29:32 +00:00
|
|
|
return;
|
1994-05-11 12:18:19 +00:00
|
|
|
}
|
|
|
|
|
1995-03-19 17:39:39 +00:00
|
|
|
if (dbg_mode == 16)
|
|
|
|
frame = (struct frame *)PTR_SEG_OFF_TO_LIN( SC_SS, SC_BP & ~1 );
|
|
|
|
else
|
|
|
|
frame = (struct frame *)SC_EBP(dbg_mask);
|
1995-01-24 16:21:01 +00:00
|
|
|
|
1994-05-11 12:18:19 +00:00
|
|
|
fprintf(stderr,"Backtrace:\n");
|
|
|
|
cs = SC_CS;
|
|
|
|
while((cs & 3) == 3) {
|
|
|
|
/* See if in 32 bit mode or not. Assume GDT means 32 bit. */
|
|
|
|
if ((cs & 7) != 7) {
|
Release 950403
Sun Apr 2 18:31:12 1995 Alexandre Julliard (julliard@sunsite.unc.edu)
* [Configure] [if1632/Imakefile]
Removed new build and short names options.
* [if1632/*.c] [tools/build.c]
Implemented compiled call-back functions for better performance;
all the relay code is now done in assembly code generated by the
build program.
Relay code is no longer dependent on being loaded below 64K.
* [loader/resource.c]
Fixed memory leak in LoadString(). A fix will also be needed for
other resources.
* [memory/global.c]
Implemented global heap arenas, so we can store informations about
global blocks, like lock counts or owner handle.
Implemented FarGetOwner() and FarSetOwner().
Implemented global heap TOOLHELP functions.
* [memory/selector.c]
Bug fix: it was not possible to re-use a free selector.
Sun Apr 2 01:34:52 1995 Constantine Sapuntzakis (csapuntz@mit.edu)
* [controls/listbox.c]
Major work on listbox code
- Many bugs fixed (still many bugs)
- More messages supported
- Code simplified
Fri Mar 31 03:27:16 EST 1995 William Magro (wmagro@tc.cornell.edu)
* [controls/edit.c]
Lots of bug fixes related to diappearing text, lost carets,
highlighting, segmentation faults, occurance of random
characters, insertion of characters over selection, misplaced
caret location, display corruption, end of line behavior, etc.
* [controls/widgets.c]
EDIT class doesn't want to use CS_PARENTDC flag.
Thu Mar 30 20:58:25 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [loader/selector.c]
FixupFunctionPrologs() should also handle multiple data modules.
(this bug only became visible because MakeProcInstance() was fixed
in 950319)
* [misc/dosfs.c]
Simplified DOS_SimplifyPath.
Small fix to DOS_opendir to reuse an entry if an open directory
is opened again, to prevent "too many open directories" messages.
Thu Mar 30 12:05:05 1995 Martin von Loewis <loewis@informatik.hu-berlin.de>
* [if1632/compobj.spec][include/compobj.h][misc/compobj.c]
CoDisconnectObject: new stub function
* [include/msdos.h]
fix DOSVERSION
* [loader/ne_image.c]
NE_FixupSegment: Be more generous on additive fixups
* [if1632/user.spec][misc/network.c]
Add more WNet* stubs
Wed Mar 29 11:47:22 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [controls/listbox.c]
DlgDirList(): send segptr instead of linear pointer
in message to static control
* [controls/menu.c]
Tried to implement ownerdrawn menuitems. Doesn't work.
* [if1632/gdi.spec] [include/windows.h] [objects/font.c]
Provide a stub for GetRasterizerCaps()
* [loader/selector.c]
Pass end address instead of length to LocalInit() in
CreateSelectors()
* [memory/local.c]
LocalInit(): If there's already a local heap in the segment, do
nothing and return TRUE
* [objects/linedda.c]
Replaced buggy LineDDA() with a Bresenham algorithm. Should work
now.
* [windows/cursor.c]
LoadCursor()/CreateCursor(): Cleaned up the mess. Needs some
more work still.
Tue Mar 21 17:54:43 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [if1632/relay.c] [if1632/callback.c] [include/dlls.h]
[if1632/winprocs.spec] [if1632/winprocs.c] [include/winprocs.h]
[controls/widgets.c] [misc/shell.c] [misc/commdlg.c]
[windows/nonclient.c] [misc/message.c]
Added a new builtin DLL that provides 16 bit entry points for all
the Def*Procs (DefDlgProc, ButtonProc etc.). OWL programs work
again.
* [misc/shell.c]
RegOpenKey()/RegCreateKey() bugs fixed.
* [loader/ne_image.c]
Skipping the initialization of a DLL when CS == 0 was broken.
1995-04-03 16:55:37 +00:00
|
|
|
extern int main();
|
1995-03-19 17:39:39 +00:00
|
|
|
fprintf(stderr,"%d ",frameno++);
|
|
|
|
print_address(frame->u.win32.saved_ip,stderr,32);
|
|
|
|
fprintf( stderr, "\n" );
|
Release 950403
Sun Apr 2 18:31:12 1995 Alexandre Julliard (julliard@sunsite.unc.edu)
* [Configure] [if1632/Imakefile]
Removed new build and short names options.
* [if1632/*.c] [tools/build.c]
Implemented compiled call-back functions for better performance;
all the relay code is now done in assembly code generated by the
build program.
Relay code is no longer dependent on being loaded below 64K.
* [loader/resource.c]
Fixed memory leak in LoadString(). A fix will also be needed for
other resources.
* [memory/global.c]
Implemented global heap arenas, so we can store informations about
global blocks, like lock counts or owner handle.
Implemented FarGetOwner() and FarSetOwner().
Implemented global heap TOOLHELP functions.
* [memory/selector.c]
Bug fix: it was not possible to re-use a free selector.
Sun Apr 2 01:34:52 1995 Constantine Sapuntzakis (csapuntz@mit.edu)
* [controls/listbox.c]
Major work on listbox code
- Many bugs fixed (still many bugs)
- More messages supported
- Code simplified
Fri Mar 31 03:27:16 EST 1995 William Magro (wmagro@tc.cornell.edu)
* [controls/edit.c]
Lots of bug fixes related to diappearing text, lost carets,
highlighting, segmentation faults, occurance of random
characters, insertion of characters over selection, misplaced
caret location, display corruption, end of line behavior, etc.
* [controls/widgets.c]
EDIT class doesn't want to use CS_PARENTDC flag.
Thu Mar 30 20:58:25 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [loader/selector.c]
FixupFunctionPrologs() should also handle multiple data modules.
(this bug only became visible because MakeProcInstance() was fixed
in 950319)
* [misc/dosfs.c]
Simplified DOS_SimplifyPath.
Small fix to DOS_opendir to reuse an entry if an open directory
is opened again, to prevent "too many open directories" messages.
Thu Mar 30 12:05:05 1995 Martin von Loewis <loewis@informatik.hu-berlin.de>
* [if1632/compobj.spec][include/compobj.h][misc/compobj.c]
CoDisconnectObject: new stub function
* [include/msdos.h]
fix DOSVERSION
* [loader/ne_image.c]
NE_FixupSegment: Be more generous on additive fixups
* [if1632/user.spec][misc/network.c]
Add more WNet* stubs
Wed Mar 29 11:47:22 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [controls/listbox.c]
DlgDirList(): send segptr instead of linear pointer
in message to static control
* [controls/menu.c]
Tried to implement ownerdrawn menuitems. Doesn't work.
* [if1632/gdi.spec] [include/windows.h] [objects/font.c]
Provide a stub for GetRasterizerCaps()
* [loader/selector.c]
Pass end address instead of length to LocalInit() in
CreateSelectors()
* [memory/local.c]
LocalInit(): If there's already a local heap in the segment, do
nothing and return TRUE
* [objects/linedda.c]
Replaced buggy LineDDA() with a Bresenham algorithm. Should work
now.
* [windows/cursor.c]
LoadCursor()/CreateCursor(): Cleaned up the mess. Needs some
more work still.
Tue Mar 21 17:54:43 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [if1632/relay.c] [if1632/callback.c] [include/dlls.h]
[if1632/winprocs.spec] [if1632/winprocs.c] [include/winprocs.h]
[controls/widgets.c] [misc/shell.c] [misc/commdlg.c]
[windows/nonclient.c] [misc/message.c]
Added a new builtin DLL that provides 16 bit entry points for all
the Def*Procs (DefDlgProc, ButtonProc etc.). OWL programs work
again.
* [misc/shell.c]
RegOpenKey()/RegCreateKey() bugs fixed.
* [loader/ne_image.c]
Skipping the initialization of a DLL when CS == 0 was broken.
1995-04-03 16:55:37 +00:00
|
|
|
if (frame->u.win32.saved_ip >= ((unsigned long)main) &&
|
|
|
|
frame->u.win32.saved_ip <= ((unsigned long)main+1000)) break;
|
1994-05-11 12:18:19 +00:00
|
|
|
frame = (struct frame *) frame->u.win32.saved_bp;
|
|
|
|
} else {
|
1995-03-19 17:39:39 +00:00
|
|
|
if (frame->u.win16.saved_bp & 1) cs = frame->u.win16.saved_cs;
|
1994-05-11 12:18:19 +00:00
|
|
|
fprintf(stderr,"%d %4.4x:%4.4x\n", frameno++, cs,
|
|
|
|
frame->u.win16.saved_ip);
|
Release 950430
Sat Apr 29 20:42:01 1995 Alexandre Julliard (julliard@sunsite.unc.edu)
* [controls/static.c]
Fixed painting of SS_*FRAME controls.
* [if1632/callback.c]
Pass the window instance as DS to the 16-bit window procedure.
Rewrote Catch() and Throw() to make them work with multiple tasks.
* [loader/main.c]
New function MAIN_Init() to perform initializations before the
first task is started instead of doing them in InitApp().
Temporary hack to command-line parsing to load one program per
command-line argument, to make testing task-switching easier.
* [loader/*.c]
Reimplemented modules to use a Windows-compatible layout and to
allow multiple tasks and multiple module instances. Not really
finished yet.
* [loader/task.c] [misc/exec.c]
Reimplemented tasks to use a common address space, and implemented
preliminary task-switching capabilities.
* [memory/global.c]
Fixed bug in GlobalNext().
* [misc/main.c]
Updated the list of contributors. Let me know if I forgot someone.
* [miscemu/int21.c]
Use one DTA per task instead of a global one.
* [objects/bitblt.c]
Fixed bug in BitBlt() that could cause BadMatch errors.
* [tools/build.c]
Added new function type 'stub', that makes possible to export an
unimplemented function by name as well as by ordinal. This will
avoid loading errors for unimplemented functions.
Generate an in-memory module layout for built-in DLLs so that the
same code can be used for built-in and loaded modules.
Changed relay code to make it unnecessary to save the value of the
BP register.
* [windows/message.c]
Implemented multiple message queues and preliminary task-switching
capabilities. Inter-task SendMessage() calls are not implemented
yet and will probably cause crashes if used.
* [windows/property.c]
Reimplemented properties and allocate them on the USER heap.
* [windows/win.c]
Fixed bug in SetWindowWord().
Reimplemented EnumWindows() and EnumTaskWindows().
Tue Apr 18 09:48:38 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [misc/main.c]
GetSystemParametersInfo(): Additional action SPI_GETICONTITLEFONT.
* [loader/resource.c]
Removed the check for NE_SEGFLAGS_EXECUTEONLY, since it broke
control.exe.
Fixed icon loading.
* [objects/font.c] [include/windows.h]
Fixed a bug in InitFontsList() and worked on the EnumFonts()
functions to make them comprehensible.
* [controls/button.c]
Fixed my previous patch to handle LBUTTONUP messages.
Fri Apr 14 11:41:28 1995 Cameron Heide (heide@ee.ualberta.ca)
* [misc/network.c, misc/dos_fs.c]
Implemented WNetGetConnection. All that is currently
supported are drives, for which the remote name is simply
the redirected UNIX directory name.
* [miscemu/int2?.c]
More drive number validity checking.
Wed Apr 12 11:28:37 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [controls/listbox.c]
Oops, my previous change to ListBoxDirectory broke the Borland
file open dialog. Fixed.
Mon Apr 10 23:17:12 1995 Martin von Loewis <loewis@informatik.hu-berlin.de>
* [if1632/ole2nls.spec] [misc/ole2nls.c] [misc/Imakefile]
New file ole2nls.c. Added stubs for GetUserDefaultLCID,
GetSystemDefaultLCID, GetUserDefaultLangID, GetSystemDefaultLangID.
Mon Apr 10 10:05:18 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [memory/global.c] [memory/local.c] [include/windows.h]
GlobalReAlloc(): If GMEM_MODIFY is set, don't resize the block.
LocalReAlloc(): Same for LMEM_MODIFY.
* [controls/listbox.c]
Fixed a bug in ListBoxDirectory that prevented commdlg from working.
Check for errors in some more places.
* [if1632/gdi.spec] [if1632/user.spec]
16 bit callback functions should be passed as segptrs.
* [include/dlls.h] [loader/ne_image.c] [loader/selector.c]
[loader/library.c]
Prevent a DLL from being initialized twice (Borlands Resource
Workshop used to do this).
Provide an additional flag for each w_file that indicates whether
it's an EXE or a DLL, for combinations like pbrush.exe/.dll.
* [controls/button.c]
Handle LBUTTONUP messages even if the button no longer has the
capture (for WinHelp).
* [include/wintypes.h]
FARPROC is now a segptr for the emulator and a function
pointer for the library.
* [misc/commdlg.c] [misc/commdlg.h]
Cleaned the file dialogs up a little. They now work reasonably well,
although there are still some problems (e.g. files are initially
invisible).
* [windows/class.c] [if1632/user.spec] [include/windows.h]
GetClassInfo() must take a segptr, as it checks whether the
highword is zero.
GetClassName() called the wrong atom function. No surprise it didn't
find anything.
* [misc/lstr.c]
AnsiToOem() and OemToAnsi() didn't terminate the strings. Fixed.
Removed some warnings.
* [if1632/relay.c] [if1632/ddeml.spec] [include/dlls.h]
New spec file for the 3.1 DDEML DDL.
* [controls/menu.c]
Small fix to ChangeMenu - mask out the obsolete flags
(MF_APPEND == MF_OWNERDRAW, this led to problems). It also had
problems with the MF_BYPOSITION flag.
* [windows/message.c]
SendMessage(): call the WH_CALLWNDPROC hook function. This is rather
ugly, I'm afraid. Windows probably passes a pointer to the 16 bit
stack for speed reasons.
* [windows/hook.c] [include/windows.h]
Set/HookWindowsHook() shouldn't just call their *Ex counterparts, as
they have slightly different semantics.
MS Hearts now works somewhat, if you disable the new builtin DDEML.
The graphics are completely messed up, though.
1995-04-30 10:05:20 +00:00
|
|
|
if (!frame->u.win16.saved_bp) break;
|
1995-03-19 17:39:39 +00:00
|
|
|
frame = (struct frame *) PTR_SEG_OFF_TO_LIN( SC_SS, frame->u.win16.saved_bp & ~1);
|
1994-05-11 12:18:19 +00:00
|
|
|
}
|
|
|
|
}
|
1994-10-17 18:12:41 +00:00
|
|
|
putchar('\n');
|
1994-05-11 12:18:19 +00:00
|
|
|
}
|
|
|
|
|