19413ead7SPavel Labath #include "dylib.h"
29413ead7SPavel Labath #include <cassert>
39413ead7SPavel Labath #include <cstdio>
4d5629b5dSEmre Kultursay #include <thread>
5d5629b5dSEmre Kultursay #include <chrono>
6*11a09692SPavel Labath #include <fstream>
7d5629b5dSEmre Kultursay 
main(int argc,char * argv[])8d5629b5dSEmre Kultursay int main(int argc, char* argv[]) {
9*11a09692SPavel Labath   lldb_enable_attach();
10*11a09692SPavel Labath   std::ofstream(argv[1]).close();
11*11a09692SPavel Labath 
12d5629b5dSEmre Kultursay   // Wait until debugger is attached.
13d5629b5dSEmre Kultursay   int main_thread_continue = 0;
14d5629b5dSEmre Kultursay   int i = 0;
15d5629b5dSEmre Kultursay   int timeout = 10;
16d5629b5dSEmre Kultursay   for (i = 0; i < timeout; i++) {
17d5629b5dSEmre Kultursay     std::this_thread::sleep_for(std::chrono::seconds(1));  // break here
18d5629b5dSEmre Kultursay     if (main_thread_continue) {
19d5629b5dSEmre Kultursay       break;
20d5629b5dSEmre Kultursay     }
21d5629b5dSEmre Kultursay   }
22d5629b5dSEmre Kultursay   assert(i != timeout && "timed out waiting for debugger");
23d5629b5dSEmre Kultursay 
24d5629b5dSEmre Kultursay   // dlopen the 'liblib_b.so' shared library.
259413ead7SPavel Labath   void* dylib_handle = dylib_open("lib_b");
26d5629b5dSEmre Kultursay   assert(dylib_handle && "dlopen failed");
27d5629b5dSEmre Kultursay 
28d5629b5dSEmre Kultursay   return i; // break after dlopen
29d5629b5dSEmre Kultursay }
30