wine/debugger/dbgmain.c
Eric Pouech d33bcb6139 Introduced DBG_VALUE struct to manipulate debugger/debuggee address space.
Added watch (hardware assisted debugging) and whatis (type of expr) commands.
Fixed some issues in local vars handling (stabs parsing & registers optimization).
2000-03-15 19:57:20 +00:00

220 lines
3.3 KiB
C

/*
* File dbgmain.c - main wrapper for internal debugger test bed.
*
* Copyright (C) 1997, Eric Youngdale.
*/
#include <signal.h>
#include <X11/Xlib.h>
#include "config.h"
#include "ldt.h"
#include "windows.h"
#include "toolhelp.h"
#include "module.h"
#include "debugger.h"
#include "win.h"
#include "peexe.h"
#include "pe_image.h"
ldt_copy_entry ldt_copy[LDT_SIZE];
unsigned char ldt_flags_copy[LDT_SIZE];
Display * display;
int
XUngrabServer( Display * d )
{
return(0);
}
int
XFlush(Display * d )
{
return(0);
}
HTASK16 GetCurrentTask(void)
{
exit(0);
}
HMODULE16 GetExePtr(HANDLE16 h)
{
exit(0);
}
int PROFILE_GetWineIniString( const char *section, const char *key_name,
const char *def, char *buffer, int len )
{
exit(0);
}
void CLASS_DumpClass( struct tagCLASS *class )
{
exit(0);
}
void MODULE_DumpModule( HMODULE16 hmodule )
{
exit(0);
}
void QUEUE_DumpQueue( HQUEUE16 hQueue )
{
exit(0);
}
void WIN_DumpWindow( HWND hwnd )
{
exit(0);
}
void CLASS_WalkClasses(void)
{
exit(0);
}
void MODULE_WalkModules(void)
{
exit(0);
}
void QUEUE_WalkQueues(void)
{
exit(0);
}
void WIN_WalkWindows( HWND hwnd, int indent )
{
exit(0);
}
NE_MODULE *NE_GetPtr( HMODULE16 hModule )
{
exit(0);
}
FARPROC16 NE_GetEntryPoint( HMODULE16 hModule, WORD ordinal )
{
exit(0);
}
void LDT_Print( int start, int length )
{
exit(0);
}
LPVOID GlobalLock16(HGLOBAL16 h)
{
exit(0);
}
BOOL16 ModuleFirst16(MODULEENTRY *lpModule)
{
return 0;
}
BOOL16 ModuleNext16(MODULEENTRY *lpModule)
{
return 0;
}
BOOL16 IsBadReadPtr16(SEGPTR s,UINT16 o)
{
exit(0);
}
BOOL IsBadReadPtr(LPCVOID s,UINT o)
{
exit(0);
}
struct qwert
{
unsigned flag1:1;
unsigned flag3:3;
signed remain:11;
unsigned whatsup:17;
} vvv;
int xyzzy(const char * qwe, int ijk)
{
return strlen(qwe) + ijk;
}
unsigned int * xxx;
unsigned int * yyy;
int xxx3[10];
char vdv[100];
struct deferred_debug_info
{
struct deferred_debug_info * next;
char * load_addr;
char * module_name;
char * dbg_info;
int dbg_size;
PIMAGE_DEBUG_DIRECTORY dbgdir;
struct pe_data * pe;
PIMAGE_SECTION_HEADER sectp;
int nsect;
short int dbg_index;
char loaded;
};
struct CodeViewDebug
{
char cv_nbtype[8];
unsigned int cv_timestamp;
char cv_unknown[4];
char cv_name[1];
};
test_pdbstuff(void)
{
struct deferred_debug_info deefer;
IMAGE_DEBUG_DIRECTORY dinfo;
struct CodeViewDebug cdebug;
IMAGE_SECTION_HEADER sects[10];
memset(&deefer, 0, sizeof(deefer));
memset(&dinfo, 0, sizeof(dinfo));
memset(&cdebug, 0, sizeof(cdebug));
memset(&sects, 0, sizeof(sects));
deefer.dbg_info = (char *) &cdebug;
dinfo.TimeStamp = 812932395;
cdebug.cv_timestamp = 833392137 /* 841951397 */;
deefer.dbgdir = &dinfo;
deefer.sectp = sects;
deefer.nsect = 10;
DEBUG_InitTypes();
DEBUG_ProcessPDBFile(&deefer, "../dumpexe.pdb");
}
int
main(int argc, char * argv[])
{
SIGCONTEXT reg;
strcpy(vdv, "This is a test");
memset(&vvv, 0xff, sizeof(vvv));
vvv.whatsup = 0;
vvv.flag3 = 0;
vvv.remain = 0x401;
argv0 = argv[0];
xxx = (unsigned int*) &vvv;
yyy = xxx + 5;
xxx3[5] = 7;
test_pdbstuff();
memset(&reg, 0, sizeof(reg));
wine_debug(SIGSEGV, &reg);
return 0;
}