package main import ( "flag" "fmt" "os" "github.com/optimyze-interviews/OezguerKesim/GetRuntimeAddresses/ebpf" "github.com/optimyze-interviews/OezguerKesim/GetRuntimeAddresses/symbolyze" ) var ( symbol = flag.String("symbol", "_PyRuntime", "Symbol to search for") glob = flag.String("glob", "*python3*", "pattern an ELF-file must match (see filepath.Match)") debug = flag.Bool("debug", false, "run in debug mode") ) func main() { flag.Parse() mapFD, err := ebpf.CreateMap() if err != nil { fmt.Printf("Failed to create eBPF map: %s\n", err) os.Exit(1) } fmt.Printf("Created eBPF map (FD: %d)\n", mapFD) scanner := symbolyze.New(*symbol, *glob) scanner.OnFound(mapFD.Set) if *debug { scanner.DebugOn() } err = scanner.Run() if err != nil { fmt.Printf("Failed to run the symbolyze scanner: %s", err) os.Exit(1) } mapContents, err := mapFD.GetMap() if err != nil { fmt.Printf("Failed to get the map contents: %s", err) os.Exit(1) } fmt.Printf("Printing contents of map %d\n", mapFD) for k, v := range mapContents { fmt.Printf("\t%d -> 0x%x\n", k, v) } os.Exit(0) }