[PUSHED] gdb/testsuite: only add -J option when compiling with gfortran

Message ID 20210602092246.3167565-1-andrew.burgess@embecosm.com
State New
Headers show
Series
  • [PUSHED] gdb/testsuite: only add -J option when compiling with gfortran
Related show

Commit Message

Andrew Burgess June 2, 2021, 9:22 a.m.
We currently make use of the -J option to gfortran in order that
compiled modules should be placed in the correct output directory.
Obviously different compilers, e.g. flang, will have different options
to achieve the same result.

This commit makes it so we only add the -J flag when using a gcc
based (i.e. gfortran) compiler.

I had a look through the flang help page and tried a few likely
looking options, but couldn't find anything that seemed to do the same
thing, so, for now, I'm only adding an extra option when compiling
with gfortran.

This does mean that any compiler other than gfortran might run into
problems if running the testsuite in parallel due to modules of the
same name all being written to the same directory, and so possibly
overwriting each other.

gdb/testsuite/ChangeLog:

	* lib/gdb.exp (gdb_compile): Only add the -J option when using a
	gcc based Fortran compiler, for example, flang does not support
	this option.
---
 gdb/testsuite/ChangeLog   | 6 ++++++
 gdb/testsuite/lib/gdb.exp | 4 +++-
 2 files changed, 9 insertions(+), 1 deletion(-)

-- 
2.25.4

Comments

Philippe Waroquiers via Gdb-patches June 2, 2021, 9:45 a.m. | #1
Hi Andrew,

This is more an fyi. We saw the same problem with the Intel compiler, which uses -module:

	-module path
	           specify path where mod files should be placed and first location to
	           look for mod files
	-I<dir>   add directory to include file search path

I have no proper fix really, as test_compiler_info relies on a c program to figure out which compiler is in use :/ This is rather annoying, as using F90_FOR_TARGET in RUNTESTFLAGS won't be enough.

I have no experience with flang, but according to github (https://github.com/flang-compiler/flang), they also have a -module option:

	-module               path to module file (-I also works)

I don't know if -I is really the same as -module for flang. I would expect that they have it split like gfortran and Intel.

Regards,
Felix


-----Original Message-----
From: Gdb-patches <gdb-patches-bounces+felix.willgerodt=intel.com@sourceware.org> On Behalf Of Andrew Burgess

Sent: Mittwoch, 2. Juni 2021 11:23
To: gdb-patches@sourceware.org
Subject: [PUSHED] gdb/testsuite: only add -J option when compiling with gfortran

We currently make use of the -J option to gfortran in order that compiled modules should be placed in the correct output directory.
Obviously different compilers, e.g. flang, will have different options to achieve the same result.

This commit makes it so we only add the -J flag when using a gcc based (i.e. gfortran) compiler.

I had a look through the flang help page and tried a few likely looking options, but couldn't find anything that seemed to do the same thing, so, for now, I'm only adding an extra option when compiling with gfortran.

This does mean that any compiler other than gfortran might run into problems if running the testsuite in parallel due to modules of the same name all being written to the same directory, and so possibly overwriting each other.

gdb/testsuite/ChangeLog:

	* lib/gdb.exp (gdb_compile): Only add the -J option when using a
	gcc based Fortran compiler, for example, flang does not support
	this option.
---
 gdb/testsuite/ChangeLog   | 6 ++++++
 gdb/testsuite/lib/gdb.exp | 4 +++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 36a5fd4feb7..f6686e19162 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -4098,7 +4098,9 @@ proc gdb_compile {source dest type options} {
 	    || [lsearch -exact $options f90] != -1 } {
 	# Fortran compile.
 	set mod_path [standard_output_file ""]
-	lappend new_options "additional_flags=-J${mod_path}"
+	if [test_compiler_info "gcc-*"] {
+	    lappend new_options "additional_flags=-J${mod_path}"
+	}
     }
 
     set shlib_found 0
--
2.25.4

Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva  
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
Tom Tromey June 2, 2021, 5:12 p.m. | #2
>> I have no proper fix really, as test_compiler_info relies on a c

>> program to figure out which compiler is in use :/ This is rather

>> annoying, as using F90_FOR_TARGET in RUNTESTFLAGS won't be enough.


It's fine to add a proc to test the properties of the relevant compiler.
See, e.g., rust_llvm_version in gdb/testsuite/lib/rust-support.exp.

Tom

Patch

diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 36a5fd4feb7..f6686e19162 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -4098,7 +4098,9 @@  proc gdb_compile {source dest type options} {
 	    || [lsearch -exact $options f90] != -1 } {
 	# Fortran compile.
 	set mod_path [standard_output_file ""]
-	lappend new_options "additional_flags=-J${mod_path}"
+	if [test_compiler_info "gcc-*"] {
+	    lappend new_options "additional_flags=-J${mod_path}"
+	}
     }
 
     set shlib_found 0