windows: Factorize handling of DLL load address offset
authorJoel Brobecker <brobecker@adacore.com>
Mon, 24 Feb 2014 23:21:13 +0000 (15:21 -0800)
committerJoel Brobecker <brobecker@adacore.com>
Wed, 26 Feb 2014 20:03:52 +0000 (12:03 -0800)
This patch is a small cleanup that moves the magic 0x1000 offset
to apply to a DLL's base address inside the win32_add_one_solib
function, rather than delegate that reponsibility to its callers.

gdb/gdbserver/ChangeLog:

* win32-low.c (win32_add_one_solib): Add 0x1000 to load_addr.
Add comment.
(win32_add_all_dlls): Remove 0x1000 offset applied to DLL
base address when calling win32_add_one_solib.
(handle_load_dll): Delete local variable load_addr.
Remove 0x1000 offset applied to DLL base address when calling
win32_add_one_solib.
(handle_unload_dll): Add comment.

gdb/gdbserver/ChangeLog
gdb/gdbserver/win32-low.c

index 1111aae83e4894f34573991cfebc0c4eda8f16d1..36907f87afcbe47eac86bb2e0a359a198bdad8ae 100644 (file)
@@ -1,3 +1,14 @@
+2014-02-26  Joel Brobecker  <brobecker@adacore.com>
+
+       * win32-low.c (win32_add_one_solib): Add 0x1000 to load_addr.
+       Add comment.
+       (win32_add_all_dlls): Remove 0x1000 offset applied to DLL
+       base address when calling win32_add_one_solib.
+       (handle_load_dll): Delete local variable load_addr.
+       Remove 0x1000 offset applied to DLL base address when calling
+       win32_add_one_solib.
+       (handle_unload_dll): Add comment.
+
 2014-02-26  Joel Brobecker  <brobecker@adacore.com>
 
        * win32-low.c (win32_add_all_dlls): Renames
index 74ac83fec027b8be120634227034a57680209471..009f9fe339fd3233040fc50277189cb54f185063 100644 (file)
@@ -971,6 +971,11 @@ win32_add_one_solib (const char *name, CORE_ADDR load_addr)
   HANDLE h = FindFirstFileA (name, &w32_fd);
 #endif
 
+  /* The symbols in a dll are offset by 0x1000, which is the
+     offset from 0 of the first byte in an image - because
+     of the file header and the section alignment. */
+  load_addr += 0x1000;
+
   if (h == INVALID_HANDLE_VALUE)
     strcpy (buf, name);
   else
@@ -1215,11 +1220,7 @@ win32_add_all_dlls (void)
                                         dll_name,
                                         MAX_PATH) == 0)
        continue;
-      /* The symbols in a dll are offset by 0x1000, which is the
-        offset from 0 of the first byte in an image - because
-        of the file header and the section alignment. */
-      win32_add_one_solib (dll_name,
-                          (CORE_ADDR) (uintptr_t) mi.lpBaseOfDll + 0x1000);
+      win32_add_one_solib (dll_name, (CORE_ADDR) (uintptr_t) mi.lpBaseOfDll);
     }
 }
 #endif
@@ -1315,7 +1316,6 @@ handle_load_dll (void)
   LOAD_DLL_DEBUG_INFO *event = &current_event.u.LoadDll;
   char dll_buf[MAX_PATH + 1];
   char *dll_name = NULL;
-  CORE_ADDR load_addr;
 
   dll_buf[0] = dll_buf[sizeof (dll_buf) - 1] = '\0';
 
@@ -1340,12 +1340,7 @@ handle_load_dll (void)
   if (!dll_name)
     return;
 
-  /* The symbols in a dll are offset by 0x1000, which is the
-     offset from 0 of the first byte in an image - because
-     of the file header and the section alignment. */
-
-  load_addr = (CORE_ADDR) (uintptr_t) event->lpBaseOfDll + 0x1000;
-  win32_add_one_solib (dll_name, load_addr);
+  win32_add_one_solib (dll_name, (CORE_ADDR) (uintptr_t) event->lpBaseOfDll);
 }
 
 /* Handle a DLL unload event.
@@ -1360,6 +1355,10 @@ handle_unload_dll (void)
 {
   CORE_ADDR load_addr =
          (CORE_ADDR) (uintptr_t) current_event.u.UnloadDll.lpBaseOfDll;
+
+  /* The symbols in a dll are offset by 0x1000, which is the
+     offset from 0 of the first byte in an image - because
+     of the file header and the section alignment. */
   load_addr += 0x1000;
   unloaded_dll (NULL, load_addr);
 }
This page took 0.036154 seconds and 4 git commands to generate.