| Index: gdb/testsuite/lib/future.exp
|
| diff --git a/gdb/testsuite/lib/future.exp b/gdb/testsuite/lib/future.exp
|
| index 4e26dcb0aa16c73e3a28a3b57acefdac237fb99b..bf47988d0b33b03cb120c0ee84359fe8af040686 100644
|
| --- a/gdb/testsuite/lib/future.exp
|
| +++ b/gdb/testsuite/lib/future.exp
|
| @@ -60,6 +60,30 @@ proc gdb_find_gfortran {} {
|
| return $CC
|
| }
|
|
|
| +proc gdb_find_go {} {
|
| + global tool_root_dir
|
| +
|
| + set GO ""
|
| +
|
| + if {![is_remote host]} {
|
| + set file [lookfor_file $tool_root_dir gccgo]
|
| + if { $file != "" } {
|
| + set root [file dirname $file]
|
| + set GO "$file -B$root/gcc/"
|
| + }
|
| + }
|
| +
|
| + if { $GO == "" } {
|
| + set GO [transform gccgo]
|
| + }
|
| +
|
| + return $GO
|
| +}
|
| +
|
| +proc gdb_find_go_linker {} {
|
| + return [find_go]
|
| +}
|
| +
|
| proc gdb_default_target_compile {source destfile type options} {
|
| global target_triplet
|
| global tool_root_dir
|
| @@ -74,6 +98,11 @@ proc gdb_default_target_compile {source destfile type options} {
|
| set libs ""
|
| set compiler_type "c"
|
| set compiler ""
|
| + set linker ""
|
| + # linker_opts_order is one of "sources-then-flags", "flags-then-sources".
|
| + # The order shouldn't matter. It's done this way to preserve
|
| + # existing behavior.
|
| + set linker_opts_order "sources-then-flags"
|
| set ldflags ""
|
| set dest [target_info name]
|
|
|
| @@ -138,6 +167,26 @@ proc gdb_default_target_compile {source destfile type options} {
|
| }
|
| }
|
|
|
| + if { $i == "go" } {
|
| + set compiler_type "go"
|
| + if {[board_info $dest exists goflags]} {
|
| + append add_flags " [target_info goflags]"
|
| + }
|
| + if {[board_info $dest exists gocompiler]} {
|
| + set compiler [target_info gocompiler]
|
| + } else {
|
| + set compiler [find_go]
|
| + }
|
| + if {[board_info $dest exists golinker]} {
|
| + set linker [target_info golinker]
|
| + } else {
|
| + set linker [find_go_linker]
|
| + }
|
| + if {[board_info $dest exists golinker_opts_order]} {
|
| + set linker_opts_order [target_info golinker_opts_order]
|
| + }
|
| + }
|
| +
|
| if {[regexp "^dest=" $i]} {
|
| regsub "^dest=" $i "" tmp
|
| if {[board_info $tmp exists name]} {
|
| @@ -193,6 +242,8 @@ proc gdb_default_target_compile {source destfile type options} {
|
| global F77_FOR_TARGET
|
| global F90_FOR_TARGET
|
| global GNATMAKE_FOR_TARGET
|
| + global GO_FOR_TARGET
|
| + global GO_LD_FOR_TARGET
|
|
|
| if {[info exists GNATMAKE_FOR_TARGET]} {
|
| if { $compiler_type == "ada" } {
|
| @@ -224,6 +275,19 @@ proc gdb_default_target_compile {source destfile type options} {
|
| }
|
| }
|
|
|
| + if { $compiler_type == "go" } {
|
| + if {[info exists GO_FOR_TARGET]} {
|
| + set compiler $GO_FOR_TARGET
|
| + }
|
| + if {[info exists GO_LD_FOR_TARGET]} {
|
| + set linker $GO_LD_FOR_TARGET
|
| + }
|
| + }
|
| +
|
| + if { $type == "executable" && $linker != "" } {
|
| + set compiler $linker
|
| + }
|
| +
|
| if { $compiler == "" } {
|
| set compiler [board_info $dest compiler]
|
| if { $compiler == "" } {
|
| @@ -366,10 +430,26 @@ proc gdb_default_target_compile {source destfile type options} {
|
| # This is obscure: we put SOURCES at the end when building an
|
| # object, because otherwise, in some situations, libtool will
|
| # become confused about the name of the actual source file.
|
| - if {$type == "object"} {
|
| - set opts "$add_flags $sources"
|
| - } else {
|
| - set opts "$sources $add_flags"
|
| + switch $type {
|
| + "object" {
|
| + set opts "$add_flags $sources"
|
| + }
|
| + "executable" {
|
| + switch $linker_opts_order {
|
| + "flags-then-sources" {
|
| + set opts "$add_flags $sources"
|
| + }
|
| + "sources-then-flags" {
|
| + set opts "$sources $add_flags"
|
| + }
|
| + default {
|
| + error "Invalid value for board_info linker_opts_order"
|
| + }
|
| + }
|
| + }
|
| + default {
|
| + set opts "$sources $add_flags"
|
| + }
|
| }
|
|
|
| if {[is_remote host]} {
|
| @@ -431,6 +511,12 @@ if {[info procs find_gfortran] == ""} {
|
| set use_gdb_compile 1
|
| }
|
|
|
| +if {[info procs find_go_linker] == ""} {
|
| + rename gdb_find_go find_go
|
| + rename gdb_find_go_linker find_go_linker
|
| + set use_gdb_compile 1
|
| +}
|
| +
|
| if {$use_gdb_compile} {
|
| catch {rename default_target_compile {}}
|
| rename gdb_default_target_compile default_target_compile
|
|
|