summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@adacore.com>2014-02-24 15:21:13 -0800
committerJoel Brobecker <brobecker@adacore.com>2014-02-26 12:03:52 -0800
commit850a0f76c25f74c4f3f86b079893e26ae2d52a9a (patch)
tree91ce04158d37350207722fbc47e398a0cf00a889
parentf25b3fc33406d83293679955ac9fba088cd5ac5c (diff)
downloadbinutils-gdb-850a0f76c25f74c4f3f86b079893e26ae2d52a9a.tar.gz
windows: Factorize handling of DLL load address offset
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.
-rw-r--r--gdb/gdbserver/ChangeLog11
-rw-r--r--gdb/gdbserver/win32-low.c23
2 files changed, 22 insertions, 12 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 1111aae83e4..36907f87afc 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,5 +1,16 @@
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
win32_ensure_ntdll_loaded. Rewrite function documentation.
Adjust implementation to always load all DLLs.
diff --git a/gdb/gdbserver/win32-low.c b/gdb/gdbserver/win32-low.c
index 74ac83fec02..009f9fe339f 100644
--- a/gdb/gdbserver/win32-low.c
+++ b/gdb/gdbserver/win32-low.c
@@ -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);
}