diff options
author | Joel Brobecker <brobecker@adacore.com> | 2014-02-24 15:21:13 -0800 |
---|---|---|
committer | Joel Brobecker <brobecker@adacore.com> | 2014-02-26 12:03:52 -0800 |
commit | 850a0f76c25f74c4f3f86b079893e26ae2d52a9a (patch) | |
tree | 91ce04158d37350207722fbc47e398a0cf00a889 /gdb/gdbserver | |
parent | f25b3fc33406d83293679955ac9fba088cd5ac5c (diff) | |
download | gdb-850a0f76c25f74c4f3f86b079893e26ae2d52a9a.zip gdb-850a0f76c25f74c4f3f86b079893e26ae2d52a9a.tar.gz gdb-850a0f76c25f74c4f3f86b079893e26ae2d52a9a.tar.bz2 |
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.
Diffstat (limited to 'gdb/gdbserver')
-rw-r--r-- | gdb/gdbserver/ChangeLog | 11 | ||||
-rw-r--r-- | gdb/gdbserver/win32-low.c | 23 |
2 files changed, 22 insertions, 12 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 1111aae..36907f8 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 74ac83f..009f9fe 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 = ¤t_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); } |