|
|
|
@ -378,12 +378,11 @@ impl FromStr for ProgramSection {
|
|
|
|
|
|
|
|
|
|
// parse the common case, eg "xdp/program_name" or
|
|
|
|
|
// "sk_skb/stream_verdict/program_name"
|
|
|
|
|
let mut parts = section.rsplitn(2, '/').collect::<Vec<_>>();
|
|
|
|
|
if parts.len() == 1 {
|
|
|
|
|
parts.push(parts[0]);
|
|
|
|
|
}
|
|
|
|
|
let kind = parts[1];
|
|
|
|
|
let name = parts[0].to_owned();
|
|
|
|
|
let (kind, name) = match section.rsplit_once('/') {
|
|
|
|
|
None => (section, section),
|
|
|
|
|
Some((kind, name)) => (kind, name),
|
|
|
|
|
};
|
|
|
|
|
let name = name.to_owned();
|
|
|
|
|
|
|
|
|
|
Ok(match kind {
|
|
|
|
|
"kprobe" => KProbe { name },
|
|
|
|
@ -889,17 +888,6 @@ impl Object {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn parse_section(&mut self, section: Section) -> Result<(), ParseError> {
|
|
|
|
|
let mut parts = section.name.rsplitn(2, '/').collect::<Vec<_>>();
|
|
|
|
|
parts.reverse();
|
|
|
|
|
|
|
|
|
|
if parts.len() == 1
|
|
|
|
|
&& (parts[0] == "xdp"
|
|
|
|
|
|| parts[0] == "sk_msg"
|
|
|
|
|
|| parts[0] == "sockops"
|
|
|
|
|
|| parts[0] == "classifier")
|
|
|
|
|
{
|
|
|
|
|
parts.push(parts[0]);
|
|
|
|
|
}
|
|
|
|
|
self.section_infos
|
|
|
|
|
.insert(section.name.to_owned(), (section.index, section.size));
|
|
|
|
|
match section.kind {
|
|
|
|
|