This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] gdb/source.c: Fix matching path substitute rule listing


> This was tested on x86_64 Linux 3.0.0-21
> 
> gdb/ChangeLog:
> 
>     * source.c (show_substitute_path_command): Fix display of matching
>     substitution rules
> 
> gdb/testsuite/ChangeLog:
> 
>     * subst.exp: Add tests to verify partial path matching output

Thank you. This is mostly OK. I made the following little fixes:
  - In the ChangeLog, the sentences should all end with a period.
  - In the second ChangeLog, the patch to the file being changed
    should be relative to the directory where the ChangeLog is
    (missing "gdb.ada/" in this case).
  - For the platform on which this was tested, I couldn't tell what
    the 3.0.0-21 was about (kernel version?), but that part is usually
    not significant and often omitted, so I just removed it.
    I've also moved that information after the ChangeLog entries
    as we traditionally place it there, but that's just because
    I was already making minor edits. There are otherwise no requirement
    for the placement of that information.

I've pushed the attached commit under the "tiny patch" rule. There
are only so much code we'll be able to accept from you under that
rule, so if you think you might have other contributions coming,
you'll need to have a copyright assignment on file with the FSF
(it's a bit of a lengthy process, even if they seem to have improved
in the past).

Thanks again for the patch (and your patience!).
-- 
Joel
>From 1e2ccb612d2b61014bb7e9fef3eb58e4947b9d2b Mon Sep 17 00:00:00 2001
From: Brad Mouring <bmouring@ni.com>
Date: Mon, 2 Jun 2014 15:55:10 -0500
Subject: [PATCH] gdb/source.c: Fix matching path substitute rule listing

The check for the source (or "from") directory snippet in listing
matching path substitution rules currently will not match anything
other than a direct match of the "from" field in a substitution rule,
resulting in the incorrect behavior below:

...
(gdb) set substitute-path /a/path /another/path
(gdb) show substitute-path
List of all source path substitution rules:
  `/a/path' -> `/another/path'.
(gdb) show substitute-path /a/path/to/a/file.ext
Source path substitution rule matching `/a/path/to/a/file.ext':
(gdb) show substitute-path /a/path
Source path substitution rule matching `/a/path':
  `/a/path' -> `/another/path'.
...

This change effects the following behavior by (sanely) checking
with the length of the "from" portion of a rule and ensuring that
the next character of the path considered for substitution is a path
delimiter (or NULL). With this change, the following behavior is
garnered:
...
(gdb) set substitute-path /a/path /another/path
(gdb) show substitute-path
List of all source path substitution rules:
  `/a/path' -> `/another/path'.
(gdb) show substitute-path /a/path/to/a/file.ext
Source path substitution rule matching `/a/path/to/a/file.ext':
  `/a/path' -> `/another/path'.
(gdb) show substitute-path /a/pathological/case/that/should/fail.err
Source path substitution rule matching `/a/pathological/case/that/should/fail.err':
(gdb)

Also included is a couple of tests added to subst.exp to verify
this behavior in the test suite.

gdb/ChangeLog:

        * source.c (show_substitute_path_command): Fix display of matching
        substitution rules.

gdb/testsuite/ChangeLog:

        * gdb.ada/subst.exp: Add tests to verify partial path matching
        output.

This was tested on x86_64 Linux.
---
 gdb/ChangeLog                    | 6 ++++++
 gdb/source.c                     | 2 +-
 gdb/testsuite/ChangeLog          | 5 +++++
 gdb/testsuite/gdb.base/subst.exp | 8 ++++++++
 4 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index bda46b5..698c15c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2014-06-03  Brad Mouring  <bmouring@ni.com>  (tiny patch)
+
+	Pushed by Joel Brobecker  <brobecker@adacore.com>
+	* source.c (show_substitute_path_command): Fix display of matching
+	substitution rules.
+
 2014-06-03  Gary Benson  <gbenson@redhat.com>
 
 	* gnu-v2-abi.c (gnuv2_value_rtti_type): Use gdb_demangle.
diff --git a/gdb/source.c b/gdb/source.c
index c985a1b..14b1f71 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -1890,7 +1890,7 @@ show_substitute_path_command (char *args, int from_tty)
 
   while (rule != NULL)
     {
-      if (from == NULL || FILENAME_CMP (rule->from, from) == 0)
+      if (from == NULL || substitute_path_rule_matches (rule, from) != 0)
         printf_filtered ("  `%s' -> `%s'.\n", rule->from, rule->to);
       rule = rule->next;
     }
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 8217403..40518b6 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-06-03  Brad Mouring  <bmouring@ni.com>  (tiny patch)
+
+	* gdb.base/subst.exp: Add tests to verify partial path matching
+	output.
+
 2014-06-03  Pedro Alves  <palves@redhat.com>
 
 	* gdb.base/sss-bp-on-user-bp-2.exp: Skip if testing with a remote
diff --git a/gdb/testsuite/gdb.base/subst.exp b/gdb/testsuite/gdb.base/subst.exp
index e132809..e99735b 100644
--- a/gdb/testsuite/gdb.base/subst.exp
+++ b/gdb/testsuite/gdb.base/subst.exp
@@ -95,6 +95,14 @@ gdb_test "show substitute-path depuis" \
          "Source path substitution rule matching `depuis':\r\n +`depuis' -> `vers'." \
          "show substitute-path depuis, after all paths added"
 
+gdb_test "show substitute-path from/path" \
+         "Source path substitution rule matching `from/path':\r\n +`from' -> `to'." \
+         "show substitute-path from/path, after all paths added"
+
+gdb_test "show substitute-path from_a_bad_path" \
+         "Source path substitution rule matching `from_a_bad_path':" \
+         "show substitute-path from_a_bad_path, after all paths added"
+
 gdb_test "show substitute-path garbage" \
          "Source path substitution rule matching `garbage':" \
          "show substitute-path garbage, after all paths added"
-- 
1.9.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]