bindata_linux_amd64.go 913 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. //go:build linux && amd64
  2. // +build linux,amd64
  3. package ebpftracer
  4. import (
  5. "embed"
  6. "fmt"
  7. "github.com/coroot/coroot-node-agent/flags"
  8. "golang.org/x/mod/semver"
  9. "os"
  10. )
  11. //go:embed ebpf/bin/amd64
  12. var binData embed.FS
  13. func EbpfCode(v string) (string, []byte, error) {
  14. if *flags.EbpfFilePath != "" {
  15. filePath := *flags.EbpfFilePath
  16. // Construct the full path to the desired file
  17. data, err := os.ReadFile(filePath)
  18. if err != nil {
  19. return "", nil, err
  20. }
  21. return filePath, data, nil
  22. }
  23. var filePath string
  24. var err error
  25. versions := []string{"v5.12", "v5.6", "v4.20", "v4.16"}
  26. for _, version := range versions {
  27. if semver.Compare(v, version) >= 0 {
  28. filePath = fmt.Sprintf("ebpf/bin/amd64/%s_amd64.o", version)
  29. break
  30. }
  31. }
  32. // Construct the full path to the desired file
  33. data, err := binData.ReadFile(filePath)
  34. if err != nil {
  35. return "", nil, err
  36. }
  37. return filePath, data, nil
  38. }