diff options
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/functionalities/exec/main.cpp')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/functionalities/exec/main.cpp | 50 |
1 files changed, 16 insertions, 34 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/exec/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/exec/main.cpp index 700c5dd94b2..92206b2d88e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/exec/main.cpp +++ b/lldb/packages/Python/lldbsuite/test/functionalities/exec/main.cpp @@ -6,6 +6,8 @@ #include <stdlib.h> #include <spawn.h> #include <unistd.h> +#include <libgen.h> +#include <string> static void exit_with_errno (int err, const char *prefix) @@ -21,9 +23,9 @@ exit_with_errno (int err, const char *prefix) } static pid_t -spawn_process (const char **argv, +spawn_process (const char *progname, + const char **argv, const char **envp, - cpu_type_t cpu_type, int &err) { pid_t pid = 0; @@ -46,21 +48,12 @@ spawn_process (const char **argv, posix_spawnattr_setsigmask(&attr, &no_signals); posix_spawnattr_setsigdefault(&attr, &all_signals); - if (cpu_type != 0) - { - size_t ocount = 0; - err = posix_spawnattr_setbinpref_np (&attr, 1, &cpu_type, &ocount); - } - - if (err == 0) - { - err = posix_spawn (&pid, - argv[0], - file_actions, - &attr, - (char * const *)argv, - (char * const *)envp); - } + err = posix_spawn (&pid, + progname, + file_actions, + &attr, + (char * const *)argv, + (char * const *)envp); posix_spawnattr_destroy(&attr); } @@ -70,25 +63,14 @@ spawn_process (const char **argv, int main (int argc, char const **argv) { - printf ("pid %i: Pointer size is %zu.\n", getpid(), sizeof(void *)); + char *buf = (char*) malloc (strlen (argv[0]) + 12); + strlcpy (buf, argv[0], strlen (argv[0]) + 1); + std::string directory_name (::dirname (buf)); + + std::string other_program = directory_name + "/secondprog"; int err = 0; // Set breakpoint 1 here -#if defined (__x86_64__) - if (sizeof(void *) == 8) - { - spawn_process (argv, NULL, CPU_TYPE_I386, err); - if (err) - exit_with_errno (err, "posix_spawn i386 error"); - } - else - { - spawn_process (argv, NULL, CPU_TYPE_X86_64, err); - if (err) - exit_with_errno (err, "posix_spawn x86_64 error"); - } -#else - spawn_process (argv, NULL, 0, err); + spawn_process (other_program.c_str(), argv, NULL, err); if (err) exit_with_errno (err, "posix_spawn x86_64 error"); -#endif return 0; } |