Browse Source

Merge pull request #720 from dave-tucker/programsection-noname

aya-obj: Remove name from ProgramSection
Dave Tucker 1 year ago
parent
commit
e9153792f1
4 changed files with 137 additions and 379 deletions
  1. 69 240
      aya-obj/src/obj.rs
  2. 64 74
      aya/src/bpf.rs
  3. 4 3
      test/integration-test/src/tests/rbpf.rs
  4. 0 62
      xtask/public-api/aya-obj.txt

+ 69 - 240
aya-obj/src/obj.rs

@@ -188,35 +188,6 @@ pub struct Function {
 ///
 /// [Program Types and ELF Sections]: https://docs.kernel.org/bpf/libbpf/program_types.html
 ///
-/// ## Program Name
-///
-/// Each section name is parsed into a section type and a program name.
-///
-/// Generally speaking,
-/// - if the section name does not contain any slashes,
-///   then the program name is just that section name;
-/// - if there are some slashes, the name is `section_name.rsplitn(2, '/')[0]`,
-/// - except for tracepoint programs, for which the name is
-///   `section_name.splitn(2, '/')[1]`.
-///
-/// ```rust
-/// use aya_obj::ProgramSection;
-/// use std::str::FromStr;
-///
-/// assert_eq!(
-///     ProgramSection::from_str("kprobe/do_unlinkat")
-///             .unwrap().name(),
-///     "do_unlinkat",
-/// );
-/// assert_eq!(
-///     ProgramSection::from_str("tracepoint/syscalls/sys_enter_openat")
-///             .unwrap().name(),
-///     "syscalls/sys_enter_openat",
-/// );
-/// ```
-///
-/// The program name will be used in [Object] as references to each program.
-///
 /// # Unsupported Sections
 ///
 /// Currently, the following section names are not supported yet:
@@ -238,139 +209,53 @@ pub struct Function {
 #[derive(Debug, Clone)]
 #[allow(missing_docs)]
 pub enum ProgramSection {
-    KRetProbe {
-        name: String,
-    },
-    KProbe {
-        name: String,
-    },
+    KRetProbe,
+    KProbe,
     UProbe {
-        name: String,
         sleepable: bool,
     },
     URetProbe {
-        name: String,
         sleepable: bool,
     },
-    TracePoint {
-        name: String,
-    },
-    SocketFilter {
-        name: String,
-    },
+    TracePoint,
+    SocketFilter,
     Xdp {
-        name: String,
         frags: bool,
     },
-    SkMsg {
-        name: String,
-    },
-    SkSkbStreamParser {
-        name: String,
-    },
-    SkSkbStreamVerdict {
-        name: String,
-    },
-    SockOps {
-        name: String,
-    },
-    SchedClassifier {
-        name: String,
-    },
-    CgroupSkb {
-        name: String,
-    },
-    CgroupSkbIngress {
-        name: String,
-    },
-    CgroupSkbEgress {
-        name: String,
-    },
+    SkMsg,
+    SkSkbStreamParser,
+    SkSkbStreamVerdict,
+    SockOps,
+    SchedClassifier,
+    CgroupSkb,
+    CgroupSkbIngress,
+    CgroupSkbEgress,
     CgroupSockAddr {
-        name: String,
         attach_type: CgroupSockAddrAttachType,
     },
-    CgroupSysctl {
-        name: String,
-    },
+    CgroupSysctl,
     CgroupSockopt {
-        name: String,
         attach_type: CgroupSockoptAttachType,
     },
-    LircMode2 {
-        name: String,
-    },
-    PerfEvent {
-        name: String,
-    },
-    RawTracePoint {
-        name: String,
-    },
+    LircMode2,
+    PerfEvent,
+    RawTracePoint,
     Lsm {
-        name: String,
         sleepable: bool,
     },
-    BtfTracePoint {
-        name: String,
-    },
+    BtfTracePoint,
     FEntry {
-        name: String,
         sleepable: bool,
     },
     FExit {
-        name: String,
         sleepable: bool,
     },
-    Extension {
-        name: String,
-    },
-    SkLookup {
-        name: String,
-    },
+    Extension,
+    SkLookup,
     CgroupSock {
-        name: String,
         attach_type: CgroupSockAttachType,
     },
-    CgroupDevice {
-        name: String,
-    },
-}
-
-impl ProgramSection {
-    /// Returns the program name
-    pub fn name(&self) -> &str {
-        match self {
-            ProgramSection::KRetProbe { name } => name,
-            ProgramSection::KProbe { name } => name,
-            ProgramSection::UProbe { name, .. } => name,
-            ProgramSection::URetProbe { name, .. } => name,
-            ProgramSection::TracePoint { name } => name,
-            ProgramSection::SocketFilter { name } => name,
-            ProgramSection::Xdp { name, .. } => name,
-            ProgramSection::SkMsg { name } => name,
-            ProgramSection::SkSkbStreamParser { name } => name,
-            ProgramSection::SkSkbStreamVerdict { name } => name,
-            ProgramSection::SockOps { name } => name,
-            ProgramSection::SchedClassifier { name } => name,
-            ProgramSection::CgroupSkb { name, .. } => name,
-            ProgramSection::CgroupSkbIngress { name, .. } => name,
-            ProgramSection::CgroupSkbEgress { name, .. } => name,
-            ProgramSection::CgroupSockAddr { name, .. } => name,
-            ProgramSection::CgroupSysctl { name } => name,
-            ProgramSection::CgroupSockopt { name, .. } => name,
-            ProgramSection::LircMode2 { name } => name,
-            ProgramSection::PerfEvent { name } => name,
-            ProgramSection::RawTracePoint { name } => name,
-            ProgramSection::Lsm { name, .. } => name,
-            ProgramSection::BtfTracePoint { name, .. } => name,
-            ProgramSection::FEntry { name, .. } => name,
-            ProgramSection::FExit { name, .. } => name,
-            ProgramSection::Extension { name } => name,
-            ProgramSection::SkLookup { name } => name,
-            ProgramSection::CgroupSock { name, .. } => name,
-            ProgramSection::CgroupDevice { name } => name,
-        }
-    }
+    CgroupDevice,
 }
 
 impl FromStr for ProgramSection {
@@ -385,84 +270,63 @@ impl FromStr for ProgramSection {
             None => (section, section),
             Some((kind, name)) => (kind, name),
         };
-        let name = name.to_owned();
 
         Ok(match kind {
-            "kprobe" => KProbe { name },
-            "kretprobe" => KRetProbe { name },
-            "uprobe" => UProbe {
-                name,
-                sleepable: false,
-            },
-            "uprobe.s" => UProbe {
-                name,
-                sleepable: true,
-            },
-            "uretprobe" => URetProbe {
-                name,
-                sleepable: false,
-            },
-            "uretprobe.s" => URetProbe {
-                name,
-                sleepable: true,
-            },
-            "xdp" => Xdp { name, frags: false },
-            "xdp.frags" => Xdp { name, frags: true },
-            "tp_btf" => BtfTracePoint { name },
-            _ if kind.starts_with("tracepoint") || kind.starts_with("tp") => {
-                // tracepoint sections are named `tracepoint/category/event_name`,
-                // and we want to parse the name as "category/event_name"
-                let name = section.splitn(2, '/').last().unwrap().to_owned();
-                TracePoint { name }
-            }
-            "socket" => SocketFilter { name },
-            "sk_msg" => SkMsg { name },
-            "sk_skb" => match &*name {
-                "stream_parser" => SkSkbStreamParser { name },
-                "stream_verdict" => SkSkbStreamVerdict { name },
+            "kprobe" => KProbe,
+            "kretprobe" => KRetProbe,
+            "uprobe" => UProbe { sleepable: false },
+            "uprobe.s" => UProbe { sleepable: true },
+            "uretprobe" => URetProbe { sleepable: false },
+            "uretprobe.s" => URetProbe { sleepable: true },
+            "xdp" => Xdp { frags: false },
+            "xdp.frags" => Xdp { frags: true },
+            "tp_btf" => BtfTracePoint,
+            kind if kind.starts_with("tracepoint") || kind.starts_with("tp") => TracePoint,
+            "socket" => SocketFilter,
+            "sk_msg" => SkMsg,
+            "sk_skb" => match name {
+                "stream_parser" => SkSkbStreamParser,
+                "stream_verdict" => SkSkbStreamVerdict,
                 _ => {
                     return Err(ParseError::InvalidProgramSection {
                         section: section.to_owned(),
                     })
                 }
             },
-            "sk_skb/stream_parser" => SkSkbStreamParser { name },
-            "sk_skb/stream_verdict" => SkSkbStreamVerdict { name },
-            "sockops" => SockOps { name },
-            "classifier" => SchedClassifier { name },
-            "cgroup_skb" => match &*name {
-                "ingress" => CgroupSkbIngress { name },
-                "egress" => CgroupSkbEgress { name },
+            "sk_skb/stream_parser" => SkSkbStreamParser,
+            "sk_skb/stream_verdict" => SkSkbStreamVerdict,
+            "sockops" => SockOps,
+            "classifier" => SchedClassifier,
+            "cgroup_skb" => match name {
+                "ingress" => CgroupSkbIngress,
+                "egress" => CgroupSkbEgress,
                 _ => {
                     return Err(ParseError::InvalidProgramSection {
                         section: section.to_owned(),
                     })
                 }
             },
-            "cgroup_skb/ingress" => CgroupSkbIngress { name },
-            "cgroup_skb/egress" => CgroupSkbEgress { name },
-            "cgroup/skb" => CgroupSkb { name },
+            "cgroup_skb/ingress" => CgroupSkbIngress,
+            "cgroup_skb/egress" => CgroupSkbEgress,
+            "cgroup/skb" => CgroupSkb,
             "cgroup/sock" => CgroupSock {
-                name,
                 attach_type: CgroupSockAttachType::default(),
             },
-            "cgroup/sysctl" => CgroupSysctl { name },
-            "cgroup/dev" => CgroupDevice { name },
+            "cgroup/sysctl" => CgroupSysctl,
+            "cgroup/dev" => CgroupDevice,
             "cgroup/getsockopt" => CgroupSockopt {
-                name,
                 attach_type: CgroupSockoptAttachType::Get,
             },
             "cgroup/setsockopt" => CgroupSockopt {
-                name,
                 attach_type: CgroupSockoptAttachType::Set,
             },
-            "cgroup" => match &*name {
-                "skb" => CgroupSkb { name },
-                "sysctl" => CgroupSysctl { name },
-                "dev" => CgroupDevice { name },
+            "cgroup" => match name {
+                "skb" => CgroupSkb,
+                "sysctl" => CgroupSysctl,
+                "dev" => CgroupDevice,
                 "getsockopt" | "setsockopt" => {
-                    if let Ok(attach_type) = CgroupSockoptAttachType::try_from(name.as_str()) {
-                        CgroupSockopt { name, attach_type }
+                    if let Ok(attach_type) = CgroupSockoptAttachType::try_from(name) {
+                        CgroupSockopt { attach_type }
                     } else {
                         return Err(ParseError::InvalidProgramSection {
                             section: section.to_owned(),
@@ -470,21 +334,20 @@ impl FromStr for ProgramSection {
                     }
                 }
                 "sock" => CgroupSock {
-                    name,
                     attach_type: CgroupSockAttachType::default(),
                 },
                 "post_bind4" | "post_bind6" | "sock_create" | "sock_release" => {
-                    if let Ok(attach_type) = CgroupSockAttachType::try_from(name.as_str()) {
-                        CgroupSock { name, attach_type }
+                    if let Ok(attach_type) = CgroupSockAttachType::try_from(name) {
+                        CgroupSock { attach_type }
                     } else {
                         return Err(ParseError::InvalidProgramSection {
                             section: section.to_owned(),
                         });
                     }
                 }
-                _ => {
-                    if let Ok(attach_type) = CgroupSockAddrAttachType::try_from(name.as_str()) {
-                        CgroupSockAddr { name, attach_type }
+                name => {
+                    if let Ok(attach_type) = CgroupSockAddrAttachType::try_from(name) {
+                        CgroupSockAddr { attach_type }
                     } else {
                         return Err(ParseError::InvalidProgramSection {
                             section: section.to_owned(),
@@ -493,98 +356,64 @@ impl FromStr for ProgramSection {
                 }
             },
             "cgroup/post_bind4" => CgroupSock {
-                name,
                 attach_type: CgroupSockAttachType::PostBind4,
             },
             "cgroup/post_bind6" => CgroupSock {
-                name,
                 attach_type: CgroupSockAttachType::PostBind6,
             },
             "cgroup/sock_create" => CgroupSock {
-                name,
                 attach_type: CgroupSockAttachType::SockCreate,
             },
             "cgroup/sock_release" => CgroupSock {
-                name,
                 attach_type: CgroupSockAttachType::SockRelease,
             },
             "cgroup/bind4" => CgroupSockAddr {
-                name,
                 attach_type: CgroupSockAddrAttachType::Bind4,
             },
             "cgroup/bind6" => CgroupSockAddr {
-                name,
                 attach_type: CgroupSockAddrAttachType::Bind6,
             },
             "cgroup/connect4" => CgroupSockAddr {
-                name,
                 attach_type: CgroupSockAddrAttachType::Connect4,
             },
             "cgroup/connect6" => CgroupSockAddr {
-                name,
                 attach_type: CgroupSockAddrAttachType::Connect6,
             },
             "cgroup/getpeername4" => CgroupSockAddr {
-                name,
                 attach_type: CgroupSockAddrAttachType::GetPeerName4,
             },
             "cgroup/getpeername6" => CgroupSockAddr {
-                name,
                 attach_type: CgroupSockAddrAttachType::GetPeerName6,
             },
             "cgroup/getsockname4" => CgroupSockAddr {
-                name,
                 attach_type: CgroupSockAddrAttachType::GetSockName4,
             },
             "cgroup/getsockname6" => CgroupSockAddr {
-                name,
                 attach_type: CgroupSockAddrAttachType::GetSockName6,
             },
             "cgroup/sendmsg4" => CgroupSockAddr {
-                name,
                 attach_type: CgroupSockAddrAttachType::UDPSendMsg4,
             },
             "cgroup/sendmsg6" => CgroupSockAddr {
-                name,
                 attach_type: CgroupSockAddrAttachType::UDPSendMsg6,
             },
             "cgroup/recvmsg4" => CgroupSockAddr {
-                name,
                 attach_type: CgroupSockAddrAttachType::UDPRecvMsg4,
             },
             "cgroup/recvmsg6" => CgroupSockAddr {
-                name,
                 attach_type: CgroupSockAddrAttachType::UDPRecvMsg6,
             },
-            "lirc_mode2" => LircMode2 { name },
-            "perf_event" => PerfEvent { name },
-            "raw_tp" | "raw_tracepoint" => RawTracePoint { name },
-            "lsm" => Lsm {
-                name,
-                sleepable: false,
-            },
-            "lsm.s" => Lsm {
-                name,
-                sleepable: true,
-            },
-            "fentry" => FEntry {
-                name,
-                sleepable: false,
-            },
-            "fentry.s" => FEntry {
-                name,
-                sleepable: true,
-            },
-            "fexit" => FExit {
-                name,
-                sleepable: false,
-            },
-            "fexit.s" => FExit {
-                name,
-                sleepable: true,
-            },
-            "freplace" => Extension { name },
-            "sk_lookup" => SkLookup { name },
+            "lirc_mode2" => LircMode2,
+            "perf_event" => PerfEvent,
+            "raw_tp" | "raw_tracepoint" => RawTracePoint,
+            "lsm" => Lsm { sleepable: false },
+            "lsm.s" => Lsm { sleepable: true },
+            "fentry" => FEntry { sleepable: false },
+            "fentry.s" => FEntry { sleepable: true },
+            "fexit" => FExit { sleepable: false },
+            "fexit.s" => FExit { sleepable: true },
+            "freplace" => Extension,
+            "sk_lookup" => SkLookup,
             _ => {
                 return Err(ParseError::InvalidProgramSection {
                     section: section.to_owned(),

+ 64 - 74
aya/src/bpf.rs

@@ -400,37 +400,37 @@ impl<'a> BpfLoader<'a> {
                     Err(err) => {
                         for program in obj.programs.values() {
                             match program.section {
-                                ProgramSection::Extension { .. }
-                                | ProgramSection::FEntry { .. }
-                                | ProgramSection::FExit { .. }
-                                | ProgramSection::Lsm { .. }
-                                | ProgramSection::BtfTracePoint { .. } => {
+                                ProgramSection::Extension
+                                | ProgramSection::FEntry { sleepable: _ }
+                                | ProgramSection::FExit { sleepable: _ }
+                                | ProgramSection::Lsm { sleepable: _ }
+                                | ProgramSection::BtfTracePoint => {
                                     return Err(BpfError::BtfError(err))
                                 }
-                                ProgramSection::KRetProbe { .. }
-                                | ProgramSection::KProbe { .. }
-                                | ProgramSection::UProbe { .. }
-                                | ProgramSection::URetProbe { .. }
-                                | ProgramSection::TracePoint { .. }
-                                | ProgramSection::SocketFilter { .. }
-                                | ProgramSection::Xdp { .. }
-                                | ProgramSection::SkMsg { .. }
-                                | ProgramSection::SkSkbStreamParser { .. }
-                                | ProgramSection::SkSkbStreamVerdict { .. }
-                                | ProgramSection::SockOps { .. }
-                                | ProgramSection::SchedClassifier { .. }
-                                | ProgramSection::CgroupSkb { .. }
-                                | ProgramSection::CgroupSkbIngress { .. }
-                                | ProgramSection::CgroupSkbEgress { .. }
-                                | ProgramSection::CgroupSockAddr { .. }
-                                | ProgramSection::CgroupSysctl { .. }
-                                | ProgramSection::CgroupSockopt { .. }
-                                | ProgramSection::LircMode2 { .. }
-                                | ProgramSection::PerfEvent { .. }
-                                | ProgramSection::RawTracePoint { .. }
-                                | ProgramSection::SkLookup { .. }
-                                | ProgramSection::CgroupSock { .. }
-                                | ProgramSection::CgroupDevice { .. } => {}
+                                ProgramSection::KRetProbe
+                                | ProgramSection::KProbe
+                                | ProgramSection::UProbe { sleepable: _ }
+                                | ProgramSection::URetProbe { sleepable: _ }
+                                | ProgramSection::TracePoint
+                                | ProgramSection::SocketFilter
+                                | ProgramSection::Xdp { frags: _ }
+                                | ProgramSection::SkMsg
+                                | ProgramSection::SkSkbStreamParser
+                                | ProgramSection::SkSkbStreamVerdict
+                                | ProgramSection::SockOps
+                                | ProgramSection::SchedClassifier
+                                | ProgramSection::CgroupSkb
+                                | ProgramSection::CgroupSkbIngress
+                                | ProgramSection::CgroupSkbEgress
+                                | ProgramSection::CgroupSockAddr { attach_type: _ }
+                                | ProgramSection::CgroupSysctl
+                                | ProgramSection::CgroupSockopt { attach_type: _ }
+                                | ProgramSection::LircMode2
+                                | ProgramSection::PerfEvent
+                                | ProgramSection::RawTracePoint
+                                | ProgramSection::SkLookup
+                                | ProgramSection::CgroupSock { attach_type: _ }
+                                | ProgramSection::CgroupDevice => {}
                             }
                         }
 
@@ -558,15 +558,15 @@ impl<'a> BpfLoader<'a> {
                     })
                 } else {
                     match &section {
-                        ProgramSection::KProbe { .. } => Program::KProbe(KProbe {
+                        ProgramSection::KProbe => Program::KProbe(KProbe {
                             data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                             kind: ProbeKind::KProbe,
                         }),
-                        ProgramSection::KRetProbe { .. } => Program::KProbe(KProbe {
+                        ProgramSection::KRetProbe => Program::KProbe(KProbe {
                             data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                             kind: ProbeKind::KRetProbe,
                         }),
-                        ProgramSection::UProbe { sleepable, name: _ } => {
+                        ProgramSection::UProbe { sleepable } => {
                             let mut data =
                                 ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level);
                             if *sleepable {
@@ -577,7 +577,7 @@ impl<'a> BpfLoader<'a> {
                                 kind: ProbeKind::UProbe,
                             })
                         }
-                        ProgramSection::URetProbe { sleepable, name: _ } => {
+                        ProgramSection::URetProbe { sleepable } => {
                             let mut data =
                                 ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level);
                             if *sleepable {
@@ -588,14 +588,12 @@ impl<'a> BpfLoader<'a> {
                                 kind: ProbeKind::URetProbe,
                             })
                         }
-                        ProgramSection::TracePoint { .. } => Program::TracePoint(TracePoint {
+                        ProgramSection::TracePoint => Program::TracePoint(TracePoint {
+                            data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
+                        }),
+                        ProgramSection::SocketFilter => Program::SocketFilter(SocketFilter {
                             data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                         }),
-                        ProgramSection::SocketFilter { .. } => {
-                            Program::SocketFilter(SocketFilter {
-                                data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
-                            })
-                        }
                         ProgramSection::Xdp { frags, .. } => {
                             let mut data =
                                 ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level);
@@ -604,32 +602,30 @@ impl<'a> BpfLoader<'a> {
                             }
                             Program::Xdp(Xdp { data })
                         }
-                        ProgramSection::SkMsg { .. } => Program::SkMsg(SkMsg {
+                        ProgramSection::SkMsg => Program::SkMsg(SkMsg {
+                            data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
+                        }),
+                        ProgramSection::CgroupSysctl => Program::CgroupSysctl(CgroupSysctl {
                             data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                         }),
-                        ProgramSection::CgroupSysctl { .. } => {
-                            Program::CgroupSysctl(CgroupSysctl {
-                                data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
-                            })
-                        }
                         ProgramSection::CgroupSockopt { attach_type, .. } => {
                             Program::CgroupSockopt(CgroupSockopt {
                                 data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                                 attach_type: *attach_type,
                             })
                         }
-                        ProgramSection::SkSkbStreamParser { .. } => Program::SkSkb(SkSkb {
+                        ProgramSection::SkSkbStreamParser => Program::SkSkb(SkSkb {
                             data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                             kind: SkSkbKind::StreamParser,
                         }),
-                        ProgramSection::SkSkbStreamVerdict { .. } => Program::SkSkb(SkSkb {
+                        ProgramSection::SkSkbStreamVerdict => Program::SkSkb(SkSkb {
                             data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                             kind: SkSkbKind::StreamVerdict,
                         }),
-                        ProgramSection::SockOps { .. } => Program::SockOps(SockOps {
+                        ProgramSection::SockOps => Program::SockOps(SockOps {
                             data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                         }),
-                        ProgramSection::SchedClassifier { .. } => {
+                        ProgramSection::SchedClassifier => {
                             Program::SchedClassifier(SchedClassifier {
                                 data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                                 name: unsafe {
@@ -638,15 +634,15 @@ impl<'a> BpfLoader<'a> {
                                 },
                             })
                         }
-                        ProgramSection::CgroupSkb { .. } => Program::CgroupSkb(CgroupSkb {
+                        ProgramSection::CgroupSkb => Program::CgroupSkb(CgroupSkb {
                             data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                             expected_attach_type: None,
                         }),
-                        ProgramSection::CgroupSkbIngress { .. } => Program::CgroupSkb(CgroupSkb {
+                        ProgramSection::CgroupSkbIngress => Program::CgroupSkb(CgroupSkb {
                             data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                             expected_attach_type: Some(CgroupSkbAttachType::Ingress),
                         }),
-                        ProgramSection::CgroupSkbEgress { .. } => Program::CgroupSkb(CgroupSkb {
+                        ProgramSection::CgroupSkbEgress => Program::CgroupSkb(CgroupSkb {
                             data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                             expected_attach_type: Some(CgroupSkbAttachType::Egress),
                         }),
@@ -656,18 +652,16 @@ impl<'a> BpfLoader<'a> {
                                 attach_type: *attach_type,
                             })
                         }
-                        ProgramSection::LircMode2 { .. } => Program::LircMode2(LircMode2 {
+                        ProgramSection::LircMode2 => Program::LircMode2(LircMode2 {
                             data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                         }),
-                        ProgramSection::PerfEvent { .. } => Program::PerfEvent(PerfEvent {
+                        ProgramSection::PerfEvent => Program::PerfEvent(PerfEvent {
                             data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                         }),
-                        ProgramSection::RawTracePoint { .. } => {
-                            Program::RawTracePoint(RawTracePoint {
-                                data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
-                            })
-                        }
-                        ProgramSection::Lsm { sleepable, name: _ } => {
+                        ProgramSection::RawTracePoint => Program::RawTracePoint(RawTracePoint {
+                            data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
+                        }),
+                        ProgramSection::Lsm { sleepable } => {
                             let mut data =
                                 ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level);
                             if *sleepable {
@@ -675,12 +669,10 @@ impl<'a> BpfLoader<'a> {
                             }
                             Program::Lsm(Lsm { data })
                         }
-                        ProgramSection::BtfTracePoint { .. } => {
-                            Program::BtfTracePoint(BtfTracePoint {
-                                data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
-                            })
-                        }
-                        ProgramSection::FEntry { sleepable, name: _ } => {
+                        ProgramSection::BtfTracePoint => Program::BtfTracePoint(BtfTracePoint {
+                            data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
+                        }),
+                        ProgramSection::FEntry { sleepable } => {
                             let mut data =
                                 ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level);
                             if *sleepable {
@@ -688,7 +680,7 @@ impl<'a> BpfLoader<'a> {
                             }
                             Program::FEntry(FEntry { data })
                         }
-                        ProgramSection::FExit { sleepable, name: _ } => {
+                        ProgramSection::FExit { sleepable } => {
                             let mut data =
                                 ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level);
                             if *sleepable {
@@ -696,10 +688,10 @@ impl<'a> BpfLoader<'a> {
                             }
                             Program::FExit(FExit { data })
                         }
-                        ProgramSection::Extension { .. } => Program::Extension(Extension {
+                        ProgramSection::Extension => Program::Extension(Extension {
                             data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                         }),
-                        ProgramSection::SkLookup { .. } => Program::SkLookup(SkLookup {
+                        ProgramSection::SkLookup => Program::SkLookup(SkLookup {
                             data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
                         }),
                         ProgramSection::CgroupSock { attach_type, .. } => {
@@ -708,11 +700,9 @@ impl<'a> BpfLoader<'a> {
                                 attach_type: *attach_type,
                             })
                         }
-                        ProgramSection::CgroupDevice { .. } => {
-                            Program::CgroupDevice(CgroupDevice {
-                                data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
-                            })
-                        }
+                        ProgramSection::CgroupDevice => Program::CgroupDevice(CgroupDevice {
+                            data: ProgramData::new(prog_name, obj, btf_fd, *verifier_log_level),
+                        }),
                     }
                 };
                 (name, program)

+ 4 - 3
test/integration-test/src/tests/rbpf.rs

@@ -9,8 +9,10 @@ fn run_with_rbpf() {
     let object = Object::parse(crate::PASS).unwrap();
 
     assert_eq!(object.programs.len(), 1);
-    assert_matches!(object.programs["pass"].section, ProgramSection::Xdp { .. });
-    assert_eq!(object.programs["pass"].section.name(), "xdp.frags");
+    assert_matches!(
+        object.programs["pass"].section,
+        ProgramSection::Xdp { frags: true }
+    );
 
     let instructions = &object
         .functions
@@ -40,7 +42,6 @@ fn use_map_with_rbpf() {
         object.programs["bpf_prog"].section,
         ProgramSection::TracePoint { .. }
     );
-    assert_eq!(object.programs["bpf_prog"].section.name(), "tracepoint");
 
     // Initialize maps:
     // - fd: 0xCAFE00 or 0xCAFE01 (the 0xCAFE00 part is used to distinguish fds from indices),

+ 0 - 62
xtask/public-api/aya-obj.txt

@@ -5813,74 +5813,43 @@ impl<T> core::convert::From<T> for aya_obj::ParseError
 pub fn aya_obj::ParseError::from(t: T) -> T
 pub enum aya_obj::obj::ProgramSection
 pub aya_obj::obj::ProgramSection::BtfTracePoint
-pub aya_obj::obj::ProgramSection::BtfTracePoint::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::CgroupDevice
-pub aya_obj::obj::ProgramSection::CgroupDevice::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::CgroupSkb
-pub aya_obj::obj::ProgramSection::CgroupSkb::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::CgroupSkbEgress
-pub aya_obj::obj::ProgramSection::CgroupSkbEgress::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::CgroupSkbIngress
-pub aya_obj::obj::ProgramSection::CgroupSkbIngress::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::CgroupSock
 pub aya_obj::obj::ProgramSection::CgroupSock::attach_type: aya_obj::programs::cgroup_sock::CgroupSockAttachType
-pub aya_obj::obj::ProgramSection::CgroupSock::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::CgroupSockAddr
 pub aya_obj::obj::ProgramSection::CgroupSockAddr::attach_type: aya_obj::programs::cgroup_sock_addr::CgroupSockAddrAttachType
-pub aya_obj::obj::ProgramSection::CgroupSockAddr::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::CgroupSockopt
 pub aya_obj::obj::ProgramSection::CgroupSockopt::attach_type: aya_obj::programs::cgroup_sockopt::CgroupSockoptAttachType
-pub aya_obj::obj::ProgramSection::CgroupSockopt::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::CgroupSysctl
-pub aya_obj::obj::ProgramSection::CgroupSysctl::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::Extension
-pub aya_obj::obj::ProgramSection::Extension::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::FEntry
-pub aya_obj::obj::ProgramSection::FEntry::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::FEntry::sleepable: bool
 pub aya_obj::obj::ProgramSection::FExit
-pub aya_obj::obj::ProgramSection::FExit::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::FExit::sleepable: bool
 pub aya_obj::obj::ProgramSection::KProbe
-pub aya_obj::obj::ProgramSection::KProbe::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::KRetProbe
-pub aya_obj::obj::ProgramSection::KRetProbe::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::LircMode2
-pub aya_obj::obj::ProgramSection::LircMode2::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::Lsm
-pub aya_obj::obj::ProgramSection::Lsm::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::Lsm::sleepable: bool
 pub aya_obj::obj::ProgramSection::PerfEvent
-pub aya_obj::obj::ProgramSection::PerfEvent::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::RawTracePoint
-pub aya_obj::obj::ProgramSection::RawTracePoint::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::SchedClassifier
-pub aya_obj::obj::ProgramSection::SchedClassifier::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::SkLookup
-pub aya_obj::obj::ProgramSection::SkLookup::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::SkMsg
-pub aya_obj::obj::ProgramSection::SkMsg::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::SkSkbStreamParser
-pub aya_obj::obj::ProgramSection::SkSkbStreamParser::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::SkSkbStreamVerdict
-pub aya_obj::obj::ProgramSection::SkSkbStreamVerdict::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::SockOps
-pub aya_obj::obj::ProgramSection::SockOps::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::SocketFilter
-pub aya_obj::obj::ProgramSection::SocketFilter::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::TracePoint
-pub aya_obj::obj::ProgramSection::TracePoint::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::UProbe
-pub aya_obj::obj::ProgramSection::UProbe::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::UProbe::sleepable: bool
 pub aya_obj::obj::ProgramSection::URetProbe
-pub aya_obj::obj::ProgramSection::URetProbe::name: alloc::string::String
 pub aya_obj::obj::ProgramSection::URetProbe::sleepable: bool
 pub aya_obj::obj::ProgramSection::Xdp
 pub aya_obj::obj::ProgramSection::Xdp::frags: bool
-pub aya_obj::obj::ProgramSection::Xdp::name: alloc::string::String
-impl aya_obj::ProgramSection
-pub fn aya_obj::ProgramSection::name(&self) -> &str
 impl core::str::traits::FromStr for aya_obj::ProgramSection
 pub type aya_obj::ProgramSection::Err = aya_obj::ParseError
 pub fn aya_obj::ProgramSection::from_str(section: &str) -> core::result::Result<aya_obj::ProgramSection, aya_obj::ParseError>
@@ -6565,74 +6534,43 @@ impl<T> core::convert::From<T> for aya_obj::ParseError
 pub fn aya_obj::ParseError::from(t: T) -> T
 pub enum aya_obj::ProgramSection
 pub aya_obj::ProgramSection::BtfTracePoint
-pub aya_obj::ProgramSection::BtfTracePoint::name: alloc::string::String
 pub aya_obj::ProgramSection::CgroupDevice
-pub aya_obj::ProgramSection::CgroupDevice::name: alloc::string::String
 pub aya_obj::ProgramSection::CgroupSkb
-pub aya_obj::ProgramSection::CgroupSkb::name: alloc::string::String
 pub aya_obj::ProgramSection::CgroupSkbEgress
-pub aya_obj::ProgramSection::CgroupSkbEgress::name: alloc::string::String
 pub aya_obj::ProgramSection::CgroupSkbIngress
-pub aya_obj::ProgramSection::CgroupSkbIngress::name: alloc::string::String
 pub aya_obj::ProgramSection::CgroupSock
 pub aya_obj::ProgramSection::CgroupSock::attach_type: aya_obj::programs::cgroup_sock::CgroupSockAttachType
-pub aya_obj::ProgramSection::CgroupSock::name: alloc::string::String
 pub aya_obj::ProgramSection::CgroupSockAddr
 pub aya_obj::ProgramSection::CgroupSockAddr::attach_type: aya_obj::programs::cgroup_sock_addr::CgroupSockAddrAttachType
-pub aya_obj::ProgramSection::CgroupSockAddr::name: alloc::string::String
 pub aya_obj::ProgramSection::CgroupSockopt
 pub aya_obj::ProgramSection::CgroupSockopt::attach_type: aya_obj::programs::cgroup_sockopt::CgroupSockoptAttachType
-pub aya_obj::ProgramSection::CgroupSockopt::name: alloc::string::String
 pub aya_obj::ProgramSection::CgroupSysctl
-pub aya_obj::ProgramSection::CgroupSysctl::name: alloc::string::String
 pub aya_obj::ProgramSection::Extension
-pub aya_obj::ProgramSection::Extension::name: alloc::string::String
 pub aya_obj::ProgramSection::FEntry
-pub aya_obj::ProgramSection::FEntry::name: alloc::string::String
 pub aya_obj::ProgramSection::FEntry::sleepable: bool
 pub aya_obj::ProgramSection::FExit
-pub aya_obj::ProgramSection::FExit::name: alloc::string::String
 pub aya_obj::ProgramSection::FExit::sleepable: bool
 pub aya_obj::ProgramSection::KProbe
-pub aya_obj::ProgramSection::KProbe::name: alloc::string::String
 pub aya_obj::ProgramSection::KRetProbe
-pub aya_obj::ProgramSection::KRetProbe::name: alloc::string::String
 pub aya_obj::ProgramSection::LircMode2
-pub aya_obj::ProgramSection::LircMode2::name: alloc::string::String
 pub aya_obj::ProgramSection::Lsm
-pub aya_obj::ProgramSection::Lsm::name: alloc::string::String
 pub aya_obj::ProgramSection::Lsm::sleepable: bool
 pub aya_obj::ProgramSection::PerfEvent
-pub aya_obj::ProgramSection::PerfEvent::name: alloc::string::String
 pub aya_obj::ProgramSection::RawTracePoint
-pub aya_obj::ProgramSection::RawTracePoint::name: alloc::string::String
 pub aya_obj::ProgramSection::SchedClassifier
-pub aya_obj::ProgramSection::SchedClassifier::name: alloc::string::String
 pub aya_obj::ProgramSection::SkLookup
-pub aya_obj::ProgramSection::SkLookup::name: alloc::string::String
 pub aya_obj::ProgramSection::SkMsg
-pub aya_obj::ProgramSection::SkMsg::name: alloc::string::String
 pub aya_obj::ProgramSection::SkSkbStreamParser
-pub aya_obj::ProgramSection::SkSkbStreamParser::name: alloc::string::String
 pub aya_obj::ProgramSection::SkSkbStreamVerdict
-pub aya_obj::ProgramSection::SkSkbStreamVerdict::name: alloc::string::String
 pub aya_obj::ProgramSection::SockOps
-pub aya_obj::ProgramSection::SockOps::name: alloc::string::String
 pub aya_obj::ProgramSection::SocketFilter
-pub aya_obj::ProgramSection::SocketFilter::name: alloc::string::String
 pub aya_obj::ProgramSection::TracePoint
-pub aya_obj::ProgramSection::TracePoint::name: alloc::string::String
 pub aya_obj::ProgramSection::UProbe
-pub aya_obj::ProgramSection::UProbe::name: alloc::string::String
 pub aya_obj::ProgramSection::UProbe::sleepable: bool
 pub aya_obj::ProgramSection::URetProbe
-pub aya_obj::ProgramSection::URetProbe::name: alloc::string::String
 pub aya_obj::ProgramSection::URetProbe::sleepable: bool
 pub aya_obj::ProgramSection::Xdp
 pub aya_obj::ProgramSection::Xdp::frags: bool
-pub aya_obj::ProgramSection::Xdp::name: alloc::string::String
-impl aya_obj::ProgramSection
-pub fn aya_obj::ProgramSection::name(&self) -> &str
 impl core::str::traits::FromStr for aya_obj::ProgramSection
 pub type aya_obj::ProgramSection::Err = aya_obj::ParseError
 pub fn aya_obj::ProgramSection::from_str(section: &str) -> core::result::Result<aya_obj::ProgramSection, aya_obj::ParseError>