[DynamicLoader] Make sure we always set the rendezvous breakpoint
authorAntonio Afonso <antonio.afonso@gmail.com>
Wed, 5 Jun 2019 16:22:33 +0000 (16:22 +0000)
committerAntonio Afonso <antonio.afonso@gmail.com>
Wed, 5 Jun 2019 16:22:33 +0000 (16:22 +0000)
commit5659b36c15b0c2ad5b3ea18fcff433b15b0ffecb
tree733dcac26a5cb9dbcbbd53ebb11ca8a6b02cfb31
parentd47f5488cf02fa06259a0f8563f684e2d45165c9
[DynamicLoader] Make sure we always set the rendezvous breakpoint

Summary:
Once we've attached to the process we load all current modules and also set a breakpoint at the rendezvous break address.
However, we don't do this if we already have a load address for the image info address (e.g.: DT_DEBUG on ELF). This code was added 4 years ago when adding support for `$qXfer:Libraries:` packet (https://reviews.llvm.org/D9471) but its intention is not 100% clear to me. It seems to me we're using that check to know if the modules have already been loaded (which they have if `$qXfer:Libraries:` is supported by the gdb server) and skip loading the modules again in the following `if` block. The problem is that we also skip setting the Rendezvous breakpoint so we stop knowing when the process loads new modules.
I fix this by moving the call to set the breakpoint to the end of the function so we always call it as long as we have a valid executable.

Reviewers: ADodds, clayborg, eugene, labath

Reviewed By: eugene, labath

Subscribers: lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D62168

llvm-svn: 362619
lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp