Store the list of loaded dlls in the server, and generate debug events
internally.

diff --git a/server/process.h b/server/process.h
index e8e7cc6..9f21e05 100644
--- a/server/process.h
+++ b/server/process.h
@@ -15,6 +15,17 @@
 
 /* process structures */
 
+struct process_dll
+{
+    struct process_dll  *next;            /* per-process dll list */
+    struct process_dll  *prev;
+    struct file         *file;            /* dll file */
+    void                *base;            /* dll base address (in process addr space) */
+    void                *name;            /* ptr to ptr to name (in process addr space) */
+    int                  dbg_offset;      /* debug info offset */
+    int                  dbg_size;        /* debug info size */
+};
+
 struct process
 {
     struct object        obj;             /* object header */
@@ -22,7 +33,6 @@
     struct process      *prev;
     struct thread       *thread_list;     /* head of the thread list */
     struct thread       *debugger;        /* thread debugging this process */
-    struct file         *exe_file;        /* main exe file */
     struct object       *handles;         /* handle entries */
     int                  exit_code;       /* process exit code */
     int                  running_threads; /* number of threads running in this process */
@@ -35,9 +45,9 @@
     struct object       *console_in;      /* console input */
     struct object       *console_out;     /* console output */
     struct event        *init_event;      /* event for init done */
+    struct process_dll   exe;             /* main exe file */
     void                *ldt_copy;        /* pointer to LDT copy in client addr space */
     void                *ldt_flags;       /* pointer to LDT flags in client addr space */
-    void                *module;          /* main module base address */
     struct new_process_request *info;     /* startup info (freed after startup) */
 };