This patch adds a new runToBinaryEntry option which sets a one-shot breakpoint
at program entry. This option is useful for synchronizing module loading with
dynamic loader to measure debugger startup performance: when program entry
one-short breakpoint hits most of the dependency modules should have been
loaded so this provides a good sample point for debugger startup time.
More explicitly for lldb-vscode, when this option is enabled, "Initialized" DAP
event is synchronously sent after most dependency modules are loaded.
Note: this is re-submission of https://reviews.llvm.org/D135798
If this synchronously runs to the entry point of the program prior to letting the IDE set breakpoints (which happens when the "initialized" packet is sent), then we can't do this. We can miss breakpoints if they are set in the C++ global initializer lists. The flow with this in here will not stop at the entry point and allow the IDE to set breakpoints first and this must happen.