diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/source.c | 2 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/source-dir.exp | 41 |
4 files changed, 54 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 8a27253..bb7b2de 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2021-02-27 Lancelot Six <lsix@lancelotsix.com> + + PR gdb/27393 + * source.c (add_path): Skip empty dirnames. + 2021-02-25 Kevin Buettner <kevinb@redhat.com> * nat/aarch64-sve-linux-ptrace.h: Add comment regarding diff --git a/gdb/source.c b/gdb/source.c index dc30dac..3a8f829 100644 --- a/gdb/source.c +++ b/gdb/source.c @@ -572,6 +572,8 @@ add_path (const char *dirname, char **which_path, int parse_separators) break; } + if (name[0] == '\0') + goto skip_dup; if (name[0] == '~') new_name_holder.reset (tilde_expand (name)); #ifdef HAVE_DOS_BASED_FILE_SYSTEM diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 625c4ec..b92e67c 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2021-02-27 Lancelot Six <lsix@lancelotix.com> + + PR gdb/27393 + * gdb.base/source-dir.exp: Test that empty dirnames are skipped. + + 2021-02-26 Tom Tromey <tom@tromey.com> * lib/gdb.exp (skip_ctf_tests): Use expr on result. diff --git a/gdb/testsuite/gdb.base/source-dir.exp b/gdb/testsuite/gdb.base/source-dir.exp index 988ea59..eff6831 100644 --- a/gdb/testsuite/gdb.base/source-dir.exp +++ b/gdb/testsuite/gdb.base/source-dir.exp @@ -163,5 +163,46 @@ proc test_truncated_comp_dir {} { "info source after setting directory search list" } +proc test_change_search_directory_with_empty_dirname {} { + gdb_start + + # Add 3 entries to the source directories list: + # - "" + # - "/foo" + # - "/bar" + # Since /foo and /bar probably do not exist, ignore the warnings printed by + # GDB. + if { [ishost *-*-mingw*] } { + gdb_test "set directories ;/foo;/bar" ".*" + } else { + gdb_test "set directories :/foo:/bar" ".*" + } + + # The first entry added ("") should be ignored, only /foo and /bar are + # effectively added. + with_test_prefix "initial_directory_state" { + gdb_test "show directories" \ + [search_dir_list [list \ + "/foo" \ + "/bar" \ + "\\\$cdir" \ + "\\\$cwd"]] + } + + # Arguments can be quoted. Check a empty string has the same effect as + # 'set directory' (i.e. reset to $cdir:$cwd) + gdb_test_no_output "set directories \"\"" + + with_test_prefix "directory_after_reset" { + gdb_test "show directories" \ + [search_dir_list [list \ + "\\\$cdir" \ + "\\\$cwd"]] + } + + gdb_exit +} + test_changing_search_directory +test_change_search_directory_with_empty_dirname test_truncated_comp_dir |