-
Notifications
You must be signed in to change notification settings - Fork 716
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
link: lazy load executable symbol table
Certain situations require the user to provide symbol addresses to the library. This is why we already support passing arbitrary address+offset pairs when placing uprobes. A real life example of this is problem is probing golang processes - since golang has known issues with uretprobes, the current popular replacement to a uretprobe is manually finding the return addresses of the probed function and applying uprobes to every single return instruction by explicitly providing address+offset. This makes the loading of symbols uneeded to begin with. The reason this is even an issue is that symbol tables tend to be large, especially when analyzing golang processes. Load the symbol table lazily instead of when creating `Executable`. There is a risk that the binary may change between the call to `OpenExecutable` and reading the symbols table. This is deemed acceptable, since the underlying tracefs / perf API is susceptible to the same problem. Fixes #987 Signed-off-by: Mattia Meleleo <[email protected]>
- Loading branch information
Showing
2 changed files
with
48 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters