From: Philippe Waroquiers <philippe.waroquiers@skynet.be>
To: gdb-patches@sourceware.org
Cc: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Subject: [RFA] Ensure deterministic result order in gdb.ada/info_auto_lang.exp
Date: Sat, 01 Dec 2018 13:38:00 -0000 [thread overview]
Message-ID: <20181201133810.9542-1-philippe.waroquiers@skynet.be> (raw)
standard_ada_testfile, standard_test_file and the explicit
csrcfile assignment in info_auto_lang.exp all gives similar pathnames
prefix for a source, such as
/home/philippe/gdb/git/build_binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.<something>.
However, the gnat compiler normalizes Ada sources path when compiling.
So, the 'Ada' .o object are referencing a pathname such as
/home/philippe/gdb/git/binutils-gdb/gdb/testsuite/gdb.ada/info_auto_lang/proc_in_ada.adb,
while the 'C' .o object still references the not normalized pathname.
As the results of 'info functions | ...' are sorted by pathname first,
the order of the results depends on the comparison between different directories,
leading to results that can change depending on these directories.
=> Ensure the result order is always the same, by normalising the C source file.
Tested by running the testcase in 2 different builds, that without normalize
were giving different results.
Note: such 'set csrcfile' is used in 4 other tests mixing Ada and C.
If deemed better (Joel?), I can factorize building such a csrcfile
and normalizing it in an ada.exp standard_csrcfile_for_ada function.
gdb/testsuite/ChangeLog
2018-12-01 Philippe Waroquiers <philippe.waroquiers@skynet.be>
* gdb.ada/info_auto_lang.exp: Normalize some_c source file.
Update order of results accordingly.
---
gdb/testsuite/gdb.ada/info_auto_lang.exp | 38 +++++++++++++-----------
1 file changed, 21 insertions(+), 17 deletions(-)
diff --git a/gdb/testsuite/gdb.ada/info_auto_lang.exp b/gdb/testsuite/gdb.ada/info_auto_lang.exp
index 4ba79fff42..31d706241a 100644
--- a/gdb/testsuite/gdb.ada/info_auto_lang.exp
+++ b/gdb/testsuite/gdb.ada/info_auto_lang.exp
@@ -24,7 +24,11 @@ load_lib "ada.exp"
standard_ada_testfile proc_in_ada
set cfile "some_c"
-set csrcfile ${srcdir}/${subdir}/${testdir}/${cfile}.c
+# gnat normalizes proc_in_ada source file when compiling.
+# As the 'info' commands results are sorted by absolute path names, also normalize
+# the some_c source file to ensure that the 'info' results are always
+# giving Ada results first.
+set csrcfile [file normalize ${srcdir}/${subdir}/${testdir}/${cfile}.c]
set cobject [standard_output_file ${cfile}.o]
if { [gdb_compile "${csrcfile}" "${cobject}" object [list debug]] != "" } {
@@ -111,41 +115,41 @@ foreach_with_prefix language_choice { "auto" "ada" "c" } {
[multi_line \
"All functions matching regular expression \"proc_in_\":" \
"" \
- "File .*some_c.c:" \
- $func_in_c($c_match) \
- "" \
"File .*proc_in_ada.adb:" \
- $func_in_ada($ada_match)
+ $func_in_ada($ada_match) \
+ "" \
+ "File .*some_c.c:" \
+ $func_in_c($c_match)
]
gdb_test "info types some_type" \
[multi_line \
- "All types matching regular expression \"some_type\":" \
- "" \
- "File .*some_c.c:" \
- $type_in_c($c_match) \
+ "All types matching regular expression \"some_type\":" \
"" \
"File .*global_pack.ads:" \
- $type_in_ada($ada_match)
+ $type_in_ada($ada_match)\
+ "" \
+ "File .*some_c.c:" \
+ $type_in_c($c_match)
]
gdb_test "info variables some_struct" \
[multi_line \
"All variables matching regular expression \"some_struct\":" \
"" \
- "File .*some_c.c:" \
- $var_in_c($c_match) \
- "" \
"File .*global_pack.ads:" \
- $var_in_ada($ada_match)
+ $var_in_ada($ada_match) \
+ "" \
+ "File .*some_c.c:" \
+ $var_in_c($c_match)
]
gdb_test "rbreak proc_in_" \
[multi_line \
- "Breakpoint.*file .*some_c.c,.*" \
- $rbreak_func_in_c($c_match) \
"Breakpoint.*file .*proc_in_ada.adb,.*" \
- $rbreak_func_in_ada($ada_match)
+ $rbreak_func_in_ada($ada_match) \
+ "Breakpoint.*file .*some_c.c,.*" \
+ $rbreak_func_in_c($c_match)
]
delete_breakpoints
}
--
2.19.2
next reply other threads:[~2018-12-01 13:38 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-01 13:38 Philippe Waroquiers [this message]
2018-12-18 20:32 ` PING " Philippe Waroquiers
2018-12-19 4:31 ` Simon Marchi
2018-12-19 21:36 ` Philippe Waroquiers
2018-12-20 5:31 ` Joel Brobecker
2018-12-20 5:50 ` Simon Marchi
2018-12-20 6:12 ` Philippe Waroquiers
2018-12-20 7:57 ` Joel Brobecker
2018-12-20 21:14 ` Philippe Waroquiers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181201133810.9542-1-philippe.waroquiers@skynet.be \
--to=philippe.waroquiers@skynet.be \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox