From bf74e428bca61022bd5cdf6bf28789a184748b4d Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Wed, 24 Feb 2016 11:31:58 +0000 Subject: [PATCH] Fix logic in exec_file_locate_attach This commit fixes an error in exec_file_locate_attach where the main executable could be loaded from outside the sysroot if a nonempty, non-"target:" sysroot was set but the discovered executable filename did not exist in that sysroot and did exist on the main filesystem. gdb/ChangeLog: * exec.c (exec_file_locate_attach): Do not attempt to locate main executable locally if not found in sysroot. gdb/testsuite/ChangeLog: * gdb.base/attach-pie-noexec.exp: Do not expect an error message on attach. --- gdb/ChangeLog | 5 +++++ gdb/exec.c | 9 ++++++--- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.base/attach-pie-noexec.exp | 2 +- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d6b4a6bcaa0..ea9f3f42e64 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2016-02-24 Gary Benson + + * exec.c (exec_file_locate_attach): Do not attempt to + locate main executable locally if not found in sysroot. + 2016-02-24 Joel Brobecker GDB 7.11 released. diff --git a/gdb/exec.c b/gdb/exec.c index 0b8c0777f52..90811c081d3 100644 --- a/gdb/exec.c +++ b/gdb/exec.c @@ -156,9 +156,12 @@ exec_file_locate_attach (int pid, int from_tty) /* If gdb_sysroot is not empty and the discovered filename is absolute then prefix the filename with gdb_sysroot. */ if (*gdb_sysroot != '\0' && IS_ABSOLUTE_PATH (exec_file)) - full_exec_path = exec_file_find (exec_file, NULL); - - if (full_exec_path == NULL) + { + full_exec_path = exec_file_find (exec_file, NULL); + if (full_exec_path == NULL) + return; + } + else { /* It's possible we don't have a full path, but rather just a filename. Some targets, such as HP-UX, don't provide the diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 54dcfd66741..1dcbe790bf8 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-02-24 Gary Benson + + * gdb.base/attach-pie-noexec.exp: Do not expect an error + message on attach. + 2016-02-23 Doug Evans * gdb.base/skip.c (test_skip): New function. diff --git a/gdb/testsuite/gdb.base/attach-pie-noexec.exp b/gdb/testsuite/gdb.base/attach-pie-noexec.exp index f3e693ad9a8..1a51049dfd1 100644 --- a/gdb/testsuite/gdb.base/attach-pie-noexec.exp +++ b/gdb/testsuite/gdb.base/attach-pie-noexec.exp @@ -60,7 +60,7 @@ set testpid [spawn_id_get_pid $test_spawn_id] gdb_start file delete -- $binfile -gdb_test "attach $testpid" "Attaching to process $testpid\r\n.*: No such file or directory\\." "attach" +gdb_test "attach $testpid" "Attaching to process $testpid\r\n.*" "attach" gdb_test "set architecture $arch" "The target architecture is assumed to be $arch" gdb_test "info shared" "From\[ \t\]+To\[ \t\]+Syms Read\[ \t\]+Shared Object Library\r\n0x.*" -- 2.30.2