// Copyright 2019 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //go:build !wasm && !windows package ld import ( "os" "os/exec" "path/filepath" "syscall" ) const syscallExecSupported = true // execArchive invokes the archiver tool with syscall.Exec(), with // the expectation that this is the last thing that takes place // in the linking operation. func (ctxt *Link) execArchive(argv []string) { var err error argv0 := argv[0] if filepath.Base(argv0) == argv0 { argv0, err = exec.LookPath(argv0) if err != nil { Exitf("cannot find %s: %v", argv[0], err) } } if ctxt.Debugvlog != 0 { ctxt.Logf("invoking archiver with syscall.Exec()\n") } err = syscall.Exec(argv0, argv, os.Environ()) if err != nil { Exitf("running %s failed: %v", argv[0], err) } }