From d7445728b14851cb8535a6a9fa2995817dea2e60 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Thu, 20 Feb 2020 06:31:24 +0100 Subject: [PATCH] [gdb/testsuite] Handle missing gccgo Without gccgo installed I see in stdout/stderr: ... Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/print.exp ... Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/handcall.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/max-depth.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/integers.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/unsafe.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/package.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/types.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/chan.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/strings.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/basic-types.exp ... Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/hello.exp ... gdb compile failed, default_target_compile: Can't find gccgo. Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/methods.exp ... gdb compile failed, default_target_compile: Can't find gccgo. ... Fix this by introducing a gdb_caching_proc support_go_compile, and using it in the complaining test-cases. Tested on x86_64-linux, with and without gccgo installed. gdb/testsuite/ChangeLog: 2020-02-20 Tom de Vries * lib/gdb.exp (support_go_compile): New gdb_caching_proc. (gdb_simple_compile): Handle compile_flags go by using .go extension for source file. * gdb.go/chan.exp: Use support_go_compile. * gdb.go/handcall.exp: Same. * gdb.go/hello.exp: Same. * gdb.go/integers.exp: Same. * gdb.go/max-depth.exp: Same. * gdb.go/methods.exp: Same. * gdb.go/package.exp: Same. * gdb.go/strings.exp: Same. * gdb.go/types.exp: Same. * gdb.go/unsafe.exp: Same. --- gdb/testsuite/ChangeLog | 16 ++++++++++++++++ gdb/testsuite/gdb.go/chan.exp | 1 + gdb/testsuite/gdb.go/handcall.exp | 1 + gdb/testsuite/gdb.go/hello.exp | 1 + gdb/testsuite/gdb.go/integers.exp | 1 + gdb/testsuite/gdb.go/max-depth.exp | 1 + gdb/testsuite/gdb.go/methods.exp | 1 + gdb/testsuite/gdb.go/package.exp | 1 + gdb/testsuite/gdb.go/strings.exp | 1 + gdb/testsuite/gdb.go/types.exp | 1 + gdb/testsuite/gdb.go/unsafe.exp | 1 + gdb/testsuite/lib/gdb.exp | 21 ++++++++++++++++++++- 12 files changed, 46 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index f0549c2676..cf7b3b14f2 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,19 @@ +2020-02-20 Tom de Vries + + * lib/gdb.exp (support_go_compile): New gdb_caching_proc. + (gdb_simple_compile): Handle compile_flags go by using .go extension + for source file. + * gdb.go/chan.exp: Use support_go_compile. + * gdb.go/handcall.exp: Same. + * gdb.go/hello.exp: Same. + * gdb.go/integers.exp: Same. + * gdb.go/max-depth.exp: Same. + * gdb.go/methods.exp: Same. + * gdb.go/package.exp: Same. + * gdb.go/strings.exp: Same. + * gdb.go/types.exp: Same. + * gdb.go/unsafe.exp: Same. + 2020-02-19 Tom de Vries * gdb.python/lib-types.exp: Make xfail more strict. diff --git a/gdb/testsuite/gdb.go/chan.exp b/gdb/testsuite/gdb.go/chan.exp index 2281ede820..d3799d5414 100644 --- a/gdb/testsuite/gdb.go/chan.exp +++ b/gdb/testsuite/gdb.go/chan.exp @@ -21,6 +21,7 @@ load_lib "go.exp" if { [skip_go_tests] } { continue } +if { [support_go_compile] == 0 } { continue } standard_testfile .go diff --git a/gdb/testsuite/gdb.go/handcall.exp b/gdb/testsuite/gdb.go/handcall.exp index 360f35155c..0ae2e606bf 100644 --- a/gdb/testsuite/gdb.go/handcall.exp +++ b/gdb/testsuite/gdb.go/handcall.exp @@ -20,6 +20,7 @@ load_lib "go.exp" if { [skip_go_tests] } { continue } +if { [support_go_compile] == 0 } { continue } standard_testfile .go diff --git a/gdb/testsuite/gdb.go/hello.exp b/gdb/testsuite/gdb.go/hello.exp index 1096f6475b..e2ed54a93a 100644 --- a/gdb/testsuite/gdb.go/hello.exp +++ b/gdb/testsuite/gdb.go/hello.exp @@ -20,6 +20,7 @@ load_lib "go.exp" if { [skip_go_tests] } { continue } +if { [support_go_compile] == 0 } { continue } standard_testfile .go diff --git a/gdb/testsuite/gdb.go/integers.exp b/gdb/testsuite/gdb.go/integers.exp index efd3358235..7d567dbf19 100644 --- a/gdb/testsuite/gdb.go/integers.exp +++ b/gdb/testsuite/gdb.go/integers.exp @@ -20,6 +20,7 @@ load_lib "go.exp" if { [skip_go_tests] } { continue } +if { [support_go_compile] == 0 } { continue } standard_testfile .go diff --git a/gdb/testsuite/gdb.go/max-depth.exp b/gdb/testsuite/gdb.go/max-depth.exp index 7fef984767..82879ce2fc 100644 --- a/gdb/testsuite/gdb.go/max-depth.exp +++ b/gdb/testsuite/gdb.go/max-depth.exp @@ -20,6 +20,7 @@ load_lib "go.exp" if { [skip_go_tests] } { continue } +if { [support_go_compile] == 0 } { continue } standard_testfile .go diff --git a/gdb/testsuite/gdb.go/methods.exp b/gdb/testsuite/gdb.go/methods.exp index 0d23a69f3d..e698cf378f 100644 --- a/gdb/testsuite/gdb.go/methods.exp +++ b/gdb/testsuite/gdb.go/methods.exp @@ -20,6 +20,7 @@ load_lib "go.exp" if { [skip_go_tests] } { continue } +if { [support_go_compile] == 0 } { continue } standard_testfile .go diff --git a/gdb/testsuite/gdb.go/package.exp b/gdb/testsuite/gdb.go/package.exp index 53b0617f08..cb181c7728 100644 --- a/gdb/testsuite/gdb.go/package.exp +++ b/gdb/testsuite/gdb.go/package.exp @@ -20,6 +20,7 @@ load_lib "go.exp" if { [skip_go_tests] } { continue } +if { [support_go_compile] == 0 } { continue } standard_testfile package1.go package2.go diff --git a/gdb/testsuite/gdb.go/strings.exp b/gdb/testsuite/gdb.go/strings.exp index d34498daa2..5da69a92f6 100644 --- a/gdb/testsuite/gdb.go/strings.exp +++ b/gdb/testsuite/gdb.go/strings.exp @@ -18,6 +18,7 @@ load_lib "go.exp" if { [skip_go_tests] } { continue } +if { [support_go_compile] == 0 } { continue } standard_testfile .go diff --git a/gdb/testsuite/gdb.go/types.exp b/gdb/testsuite/gdb.go/types.exp index fedc377ca1..c8d7e21ac6 100644 --- a/gdb/testsuite/gdb.go/types.exp +++ b/gdb/testsuite/gdb.go/types.exp @@ -20,6 +20,7 @@ load_lib "go.exp" if { [skip_go_tests] } { continue } +if { [support_go_compile] == 0 } { continue } standard_testfile .go diff --git a/gdb/testsuite/gdb.go/unsafe.exp b/gdb/testsuite/gdb.go/unsafe.exp index 89e2fff3c0..c1f625729c 100644 --- a/gdb/testsuite/gdb.go/unsafe.exp +++ b/gdb/testsuite/gdb.go/unsafe.exp @@ -20,6 +20,7 @@ load_lib "go.exp" if { [skip_go_tests] } { continue } +if { [support_go_compile] == 0 } { continue } standard_testfile .go diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index d5e2295703..d8ebddf63c 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -2490,6 +2490,18 @@ gdb_caching_proc support_complex_tests { } executable] } +# Return 1 if compiling go is supported. +gdb_caching_proc support_go_compile { + + return [gdb_can_simple_compile go-hello { + package main + import "fmt" + func main() { + fmt.Println("hello world") + } + } executable go] +} + # Return 1 if GDB can get a type for siginfo from the target, otherwise # return 0. @@ -3631,7 +3643,14 @@ proc gdb_simple_compile {name code {type object} {compile_flags {}} {object obj} set postfix "s" } } - set src [standard_temp_file $name-[pid].c] + set ext "c" + foreach flag $compile_flags { + if { "$flag" == "go" } { + set ext "go" + break + } + } + set src [standard_temp_file $name-[pid].$ext] set obj [standard_temp_file $name-[pid].$postfix] set compile_flags [concat $compile_flags {debug nowarnings quiet}] -- 2.34.1