gdbserver: convert the global dll list into a process_info field
authorTankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Tue, 16 Mar 2021 18:36:39 +0000 (19:36 +0100)
committerTankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Mon, 22 Mar 2021 08:18:04 +0000 (09:18 +0100)
commitd171632faa9f563f47224e0f6214f8860ed7bcc4
tree1a817528568a6d8840199f132491314996f1ae16
parent2aaf2ce843e4078b158cdfb61435217621ba1803
gdbserver: convert the global dll list into a process_info field

The 'all_dlls' list is global.  This would cause the complete dll list
to be reported for individual processes.  Move the list into the
process_info struct.

Currently the dll list is used only by the win32-low target, which
does not support the multi-process feature.  Therefore, it practically
does not matter whether the list is global or per-process.  However,
there may be targets that are outside the binutils-gdb repo (e.g. we,
at Intel, have such a target) that have multi-process and use the dll
list.  So, it makes sense to do the right thing.

gdbserver/ChangeLog:
2021-03-22  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

* inferiors.h (struct process_info) <all_dlls, dlls_changed>: New
fields.
* dll.h (loaded_dll)
(unloaded_dll): Declare an overloaded version that takes a proc
parameter.
* dll.cc (loaded_dll)
(unloaded_dll): Implement the overloaded versions.
(clear_dlls): Clear all process' dll lists.
(all_dlls, dlls_changed): Remove the global variables.
* remote-utils.cc (prepare_resume_reply): Update to consider a dll
list per proc.
* server.cc (handle_qxfer_libraries): Ditto.
(handle_v_attach): Ditto.
(captured_main): Ditto.
gdbserver/ChangeLog
gdbserver/dll.cc
gdbserver/dll.h
gdbserver/inferiors.h
gdbserver/remote-utils.cc
gdbserver/server.cc