199451b44SJordan Rupprecht #define _POSIX_C_SOURCE 200809L
299451b44SJordan Rupprecht 
399451b44SJordan Rupprecht #include <cstdio>
499451b44SJordan Rupprecht #include <cstdlib>
599451b44SJordan Rupprecht #include <cstring>
699451b44SJordan Rupprecht #include <libgen.h>
799451b44SJordan Rupprecht #include <string>
899451b44SJordan Rupprecht #include <unistd.h>
999451b44SJordan Rupprecht 
main(int argc,char const ** argv)1099451b44SJordan Rupprecht int main(int argc, char const **argv) {
1199451b44SJordan Rupprecht   char *buf = strdup(argv[0]); // Set breakpoint 1 here
1299451b44SJordan Rupprecht   std::string directory_name(::dirname(buf));
1399451b44SJordan Rupprecht 
1499451b44SJordan Rupprecht   std::string other_program = directory_name + "/secondprog";
15*d00eaa08SRaphael Isemann   argv[0] = other_program.c_str();
16*d00eaa08SRaphael Isemann   execv(argv[0], const_cast<char *const *>(argv));
1799451b44SJordan Rupprecht   perror("execve");
1899451b44SJordan Rupprecht   abort();
1999451b44SJordan Rupprecht }
20