diff options
author | Tom de Vries <tdevries@suse.de> | 2021-08-30 16:03:15 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2021-08-30 16:03:15 +0200 |
commit | e1652de24afa57d8a66d5f37642d1922dbf9c984 (patch) | |
tree | 60f7971a8f95ad7f7b91a57025c7a8aabdb2748e | |
parent | 897254e07337dec60b215cd4441b213eb2eb1f5d (diff) | |
download | gdb-e1652de24afa57d8a66d5f37642d1922dbf9c984.zip gdb-e1652de24afa57d8a66d5f37642d1922dbf9c984.tar.gz gdb-e1652de24afa57d8a66d5f37642d1922dbf9c984.tar.bz2 |
[gdb/cli] Don't assert on empty string for core-file
With current gdb we run into:
...
$ gdb -batch '' ''
: No such file or directory.
pathstuff.cc:132: internal-error: \
gdb::unique_xmalloc_ptr<char> gdb_abspath(const char*): \
Assertion `path != NULL && path[0] != '\0'' failed.
...
Fix this by skipping the call to gdb_abspath in core_target_open in the
empty-string case, such that we have instead:
...
$ gdb -batch '' ''
: No such file or directory.
: No such file or directory.
$
...
Tested on x86_64-linux.
gdb/ChangeLog:
2021-08-30 Tom de Vries <tdevries@suse.de>
PR cli/28290
* gdb/corelow.c (core_target_open): Skip call to gdb_abspath in the
empty-string case.
gdb/testsuite/ChangeLog:
2021-08-30 Tom de Vries <tdevries@suse.de>
PR cli/28290
* gdb.base/batch-exit-status.exp: Add gdb '' and gdb '' '' tests.
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/corelow.c | 3 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/batch-exit-status.exp | 4 |
4 files changed, 17 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 477b177..fd4a9d1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2021-08-30 Tom de Vries <tdevries@suse.de> + + PR cli/28290 + * gdb/corelow.c (core_target_open): Skip call to gdb_abspath in the + empty-string case. + 2021-08-23 Tom de Vries <tdevries@suse.de> PR gdb/26880 diff --git a/gdb/corelow.c b/gdb/corelow.c index eb785a0..711e86c 100644 --- a/gdb/corelow.c +++ b/gdb/corelow.c @@ -428,7 +428,8 @@ core_target_open (const char *arg, int from_tty) } gdb::unique_xmalloc_ptr<char> filename (tilde_expand (arg)); - if (!IS_ABSOLUTE_PATH (filename.get ())) + if (strlen (filename.get ()) != 0 + && !IS_ABSOLUTE_PATH (filename.get ())) filename = gdb_abspath (filename.get ()); flags = O_BINARY | O_LARGEFILE; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index e5efec5..436bcb4 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2021-08-30 Tom de Vries <tdevries@suse.de> + + PR cli/28290 + * gdb.base/batch-exit-status.exp: Add gdb '' and gdb '' '' tests. + 2021-08-23 Tom de Vries <tdevries@suse.de> PR gdb/26880 diff --git a/gdb/testsuite/gdb.base/batch-exit-status.exp b/gdb/testsuite/gdb.base/batch-exit-status.exp index 085dfc6..9a08019 100644 --- a/gdb/testsuite/gdb.base/batch-exit-status.exp +++ b/gdb/testsuite/gdb.base/batch-exit-status.exp @@ -76,3 +76,7 @@ test_exit_status 1 "-batch -x $good_commands -x $bad_commands" \ "-batch -x good-commands -x bad-commands" test_exit_status 1 "-batch -x $good_commands -ex \"set not-a-thing 4\"" \ "-batch -x good-commands -ex \"set not-a-thing 4\"" + +set no_such_re ": No such file or directory\\." +test_exit_status 1 "-batch \"\"" $no_such_re +test_exit_status 1 "-batch \"\" \"\"" [multi_line $no_such_re $no_such_re] |