gdb/testsuite: Use -J option when compiling Fortran tests
authorAndrew Burgess <andrew.burgess@embecosm.com>
Wed, 27 Nov 2019 21:51:35 +0000 (21:51 +0000)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Wed, 4 Dec 2019 20:33:36 +0000 (20:33 +0000)
When compiling Fortran tests (e.g. gdb.fortran/info-modules.exp), the
Fotran compile produces .mod files.  These files contain details of
compiled modules that are then consumed by the compiler when compiling
other files that USE a module.

Currently the compiler writes the .mod files into its current
directory, so for us this turns out to be 'build/gdb/testsuite/'.
This means that .mod files can be shared between tests, which seems
against the spirit of the GDB testsuite; source files should be
compiled fresh for each test.

This commit adds the -J option to the compiler flags whenever we
compile a Fortran file, this option tells the compiler where to write,
and look for, .mod files.

After this commit there was one Fortran test that needed fixing, with
that fix in place all of the Fortran tests pass again, but now the
.mod files are now produced in the per-test output directories.

gdb/testsuite/ChangeLog:

* lib/gdb.exp (gdb_compile): Add -J compiler option when building
Fortran tests.
* gdb.mi/mi-fortran-modules.exp: Compile source files in correct
order.

Change-Id: I99444cf22d80e320093d3f3ed9abb8825f378e0b

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.mi/mi-fortran-modules.exp
gdb/testsuite/lib/gdb.exp

index 8df282c6b837e9ef5e4d6c7e9c41de4af648ebcf..173e82d59644f63b642fcd4c062e1b8431df292f 100644 (file)
@@ -1,3 +1,10 @@
+2019-12-04  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * lib/gdb.exp (gdb_compile): Add -J compiler option when building
+       Fortran tests.
+       * gdb.mi/mi-fortran-modules.exp: Compile source files in correct
+       order.
+
 2019-12-04  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * gdb.fortran/type-kinds.exp (test_cast_1_to_type_kind): Handle
index 12a81a68695448ef1ce5c1cdb098b1ebfb5e4ce1..df48324784b2f2886697a9f808a2daf968c33cd8 100644 (file)
@@ -22,7 +22,7 @@ set MIFLAGS "-i=mi"
 standard_testfile "mi-fortran-modules.f90" "mi-fortran-modules-2.f90"
 
 if {[prepare_for_testing "failed to prepare" ${testfile} \
-        [list $srcfile $srcfile2] {debug f90}]} {
+        [list $srcfile2 $srcfile] {debug f90}]} {
     return -1
 }
 
index 4682f5d2f8fe0ce0806f2fa844ce6417fd290d04..aa774462d25f51d2186eb98227350d18ca5544ed 100644 (file)
@@ -3719,6 +3719,16 @@ proc gdb_compile {source dest type options} {
     } else {
        set new_options [universal_compile_options]
     }
+
+    # Place (and look for) Fortran `.mod` files in the output
+    # directory for this specific test.
+    if {[lsearch -exact $options f77] != -1 \
+           || [lsearch -exact $options f90] != -1 } {
+       # Fortran compile.
+       set mod_path [standard_output_file ""]
+       lappend new_options "additional_flags=-J${mod_path}"
+    }
+
     set shlib_found 0
     set shlib_load 0
     set getting_compiler_info 0