diff --git a/service/api/types.go b/service/api/types.go index 95e55b945cc8caf441c8862fd9b0a54ef58cbf8d..cc2117ffb6b3860f1890fb756dee6002e7471d0e 100644 --- a/service/api/types.go +++ b/service/api/types.go @@ -415,6 +415,7 @@ type GetVersionIn struct { type GetVersionOut struct { DelveVersion string APIVersion int + Backend string // backend currently in use } // SetAPIVersionIn is the input for SetAPIVersion. diff --git a/service/debugger/debugger.go b/service/debugger/debugger.go index 7f2531e8dbbf8bb37e1ef8592549a2aa7708fb18..1aee669cc57c2bc0d93891dd7f0fa03ede4515ab 100644 --- a/service/debugger/debugger.go +++ b/service/debugger/debugger.go @@ -1207,6 +1207,27 @@ func (d *Debugger) ListDynamicLibraries() []api.Image { return r } +func (d *Debugger) GetVersion(out *api.GetVersionOut) error { + if d.config.CoreFile != "" { + if d.config.Backend == "rr" { + out.Backend = "rr" + } else { + out.Backend = "core" + } + } else { + if d.config.Backend == "default" { + if runtime.GOOS == "darwin" { + out.Backend = "lldb" + } else { + out.Backend = "native" + } + } else { + out.Backend = d.config.Backend + } + } + return nil +} + func go11DecodeErrorCheck(err error) error { if _, isdecodeerr := err.(dwarf.DecodeError); !isdecodeerr { return err diff --git a/service/rpccommon/server.go b/service/rpccommon/server.go index 470b49141f1ae09a228c6e7da737c7fa5602f2c8..3d624389c6f3b9bf9c7acb1c077ea031071bbfd9 100644 --- a/service/rpccommon/server.go +++ b/service/rpccommon/server.go @@ -387,7 +387,7 @@ func (cb *RPCCallback) Return(out interface{}, err error) { func (s *RPCServer) GetVersion(args api.GetVersionIn, out *api.GetVersionOut) error { out.DelveVersion = version.DelveVersion.String() out.APIVersion = s.s.config.APIVersion - return nil + return s.s.debugger.GetVersion(out) } // Changes version of the API being served.