libbpf: Fix uprobe offset calculation #8647
Open
+24
−8
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As reported on libbpf-rs issue(0), the current implementation may resolve symbol to a wrong offset and thus missing uprobe events. Calculate the symbol offset from program header instead. This is almost the same as the original implementation in commit 433966e ("libbpf: Support function name-based attach uprobes") but with
phdr.p_flags & PF_X
check dropped. This is because we also use this to calculate offset for non-func symbols like in uprobe multi selftest. See the kernel doc (1) and spec (2) for references.Fixes: fe92833 ("libbpf: Fix uprobe symbol file offset calculation logic")
Fixes: 3774705 ("libbpf: Add elf symbol iterator")
Reported-by: Guilherme Pascoal [email protected]