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 Kultursayint 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