in tools/go-agent/instrument/agentcore/instrument.go [98:145]
func (i *Instrument) WriteExtraFiles(dir string) ([]string, error) {
if !i.hasCopyPath {
return nil, nil
}
sub := i.needsCopyDir
results := make([]string, 0)
if sub == "" {
sub = "."
}
pkgUpdates := make(map[string]string)
for _, p := range CopiedSubPackages {
pkgUpdates[filepath.Join(EnhanceFromBasePackage, p)] = filepath.Join(EnhanceBasePackage, p)
}
pkgUpdates[filepath.Join(EnhanceFromBasePackage, ReporterFromBasePackage)] = filepath.Join(ProjectBasePackage, ReporterBasePackage)
for k, v := range pkgUpdates {
newKey := strings.ReplaceAll(k, `\`, `/`)
newVal := strings.ReplaceAll(v, `\`, `/`)
pkgUpdates[newKey] = newVal
}
copiedFiles, err := tools.CopyGoFiles(core.FS, sub, dir, i.buildDSTDebugInfo, func(file *dst.File) {
tools.ChangePackageImportPath(file, pkgUpdates)
})
if err != nil {
return nil, err
}
results = append(results, copiedFiles...)
// write extra file to link the operator and TLS methods
if sub == "." {
file, err := i.writeLinkerFile(dir)
if err != nil {
return nil, err
}
results = append(results, file)
file1, err := i.writeTracerInitLink(dir)
if err != nil {
return nil, err
}
results = append(results, file1)
}
return results, nil
}