Prevent endless loop in except2.
[wine] / debugger / dbgmain.c
1 /*
2  * File dbgmain.c - main wrapper for internal debugger test bed.
3  *
4  * Copyright (C) 1997, Eric Youngdale.
5  */
6 #include <signal.h>
7 #include <X11/Xlib.h>
8 #include "config.h"
9 #include "ldt.h"
10 #include "windows.h"
11 #include "toolhelp.h"
12 #include "module.h"
13 #include "debugger.h"
14 #include "win.h"
15
16 #include "debugger.h"
17 #include "peexe.h"
18 #include "pe_image.h"
19
20 ldt_copy_entry ldt_copy[LDT_SIZE];
21 unsigned char ldt_flags_copy[LDT_SIZE];
22
23 Display * display;
24
25 int
26 XUngrabServer( Display * d )
27 {
28   return(0);
29 }
30
31 int
32 XFlush(Display * d )
33 {
34   return(0);
35 }
36
37 HTASK16    GetCurrentTask()
38 {
39   exit(0);
40 }
41
42 HMODULE16  GetExePtr(HANDLE16 h)
43 {
44   exit(0);
45 }
46
47 int PROFILE_GetWineIniString( const char *section, const char *key_name,
48                                      const char *def, char *buffer, int len )
49 {
50   exit(0);
51 }
52
53
54 void CLASS_DumpClass( struct tagCLASS *class )
55 {
56   exit(0);
57 }
58
59 void MODULE_DumpModule( HMODULE16 hmodule )
60 {
61   exit(0);
62 }
63
64 void QUEUE_DumpQueue( HQUEUE16 hQueue )
65 {
66   exit(0);
67 }
68
69 void WIN_DumpWindow( HWND hwnd )
70 {
71   exit(0);
72 }
73
74
75 void CLASS_WalkClasses()
76 {
77   exit(0);
78 }
79
80 void MODULE_WalkModules()
81 {
82   exit(0);
83 }
84
85 void QUEUE_WalkQueues()
86 {
87   exit(0);
88 }
89
90 void WIN_WalkWindows( HWND hwnd, int indent )
91 {
92   exit(0);
93 }
94
95 NE_MODULE *NE_GetPtr( HMODULE16 hModule )
96 {
97   exit(0);
98 }
99
100 FARPROC16 NE_GetEntryPoint( HMODULE16 hModule, WORD ordinal )
101 {
102   exit(0);
103 }
104
105 void LDT_Print( int start, int length )
106 {
107   exit(0);
108 }
109
110 LPVOID     GlobalLock16(HGLOBAL16 h)
111 {
112   exit(0);
113 }
114
115 BOOL16 ModuleFirst16(MODULEENTRY *lpModule)
116 {
117   return 0;
118 }
119
120 BOOL16 ModuleNext16(MODULEENTRY *lpModule)
121 {
122   return 0;
123 }
124
125 BOOL16     IsBadReadPtr16(SEGPTR s,UINT16 o)
126 {
127   exit(0);
128 }
129
130 BOOL     IsBadReadPtr(LPCVOID s,UINT o)
131 {
132   exit(0);
133 }
134
135 struct qwert
136 {
137   unsigned flag1:1;
138   unsigned flag3:3;
139   signed remain:11;
140   unsigned whatsup:17;
141 } vvv;
142
143 int xyzzy(const char * qwe, int ijk)
144 {
145   return strlen(qwe) + ijk;
146 }
147
148 unsigned int * xxx;
149 unsigned int * yyy;
150
151 int xxx3[10];
152
153 char vdv[100];
154
155 struct deferred_debug_info
156 {
157         struct deferred_debug_info      * next;
158         char                            * load_addr;
159         char                            * module_name;
160         char                            * dbg_info;
161         int                               dbg_size;
162         PIMAGE_DEBUG_DIRECTORY            dbgdir;
163         struct pe_data                  * pe;
164         PIMAGE_SECTION_HEADER            sectp;
165         int                               nsect;
166         short int                         dbg_index;                    
167         char                              loaded;
168 };
169
170 struct CodeViewDebug
171 {
172         char                cv_nbtype[8];
173         unsigned int        cv_timestamp;
174         char                cv_unknown[4];
175         char                cv_name[1];
176 };
177
178 test_pdbstuff()
179 {
180   struct deferred_debug_info deefer;
181   IMAGE_DEBUG_DIRECTORY dinfo;
182   struct CodeViewDebug cdebug;
183   IMAGE_SECTION_HEADER  sects[10];
184
185   memset(&deefer, 0, sizeof(deefer));
186   memset(&dinfo, 0, sizeof(dinfo));
187   memset(&cdebug, 0, sizeof(cdebug));
188   memset(&sects, 0, sizeof(sects));
189
190   deefer.dbg_info = (char *) &cdebug;
191   dinfo.TimeStamp = 812932395;
192   cdebug.cv_timestamp = 833392137  /* 841951397 */;
193   deefer.dbgdir = &dinfo;
194   deefer.sectp = sects;
195   deefer.nsect = 10;
196
197   DEBUG_InitTypes();
198   DEBUG_ProcessPDBFile(&deefer, "../dumpexe.pdb");
199 }
200
201 int
202 main(int argc, char * argv[])
203 {
204   extern char * DEBUG_argv0;
205   SIGCONTEXT  reg;
206   
207   strcpy(vdv, "This is a test");
208   memset(&vvv, 0xff, sizeof(vvv));
209   vvv.whatsup = 0;
210   vvv.flag3 = 0;
211   vvv.remain = 0x401;
212   DEBUG_argv0 = argv[0];
213   xxx = (unsigned int*) &vvv;
214   yyy = xxx + 5;
215   xxx3[5] = 7;
216
217   test_pdbstuff();
218
219   memset(&reg, 0, sizeof(reg));
220   wine_debug(SIGSEGV, &reg);
221   return 0;
222 }