| Summary: | The /* pc=0x... */ is no longer printed by "stap -v -L 'kernel.function("*")' | ||
|---|---|---|---|
| Product: | systemtap | Reporter: | William Cohen <wcohen> |
| Component: | translator | Assignee: | Di Chen <dichen> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | dichen, fche, tbaeder |
| Priority: | P2 | ||
| Version: | unspecified | ||
| Target Milestone: | --- | ||
| Host: | Target: | ||
| Build: | Last reconfirmed: | ||
| Project(s) to access: | ssh public key: | ||
Before the commit was made printscript in main.cxx:180 was:
p->printsig(sig, false);
This would end up calling the following method in tapsets.cxx where p is type (derived_probe *):
dwarf_derived_probe::printsig (ostream& o, bool nest) const
However, after the commit the main.cxx:180 becomes:
p->printsig_nonest(sig);
The code in printscript ends up calling the following method in staptree.cxx:
void probe::printsig (ostream& o) const
Yeah it looks like the conversion to fork into _nest and _nonest was not complete/accurate. Unless Tim might want to have a second go at it, we'd need to revert this patch. Commit f463f6053e6d28da2095d5b4b9da0cbac3d522af addresses this issue. With this commit the /* pc=... info is there:
$ ../install/bin/stap -v -L 'kernel.function("BTRFS_I")'
Pass 1: parsed user script and 792 library scripts using 3480720virt/3245652res/12488shr/3233364data kb, in 7050usr/730sys/8069real ms.
kernel.function("BTRFS_I@fs/btrfs/btrfs_inode.h:232") /* pc=_stext+0x544c68 */
kernel.function("BTRFS_I@fs/btrfs/btrfs_inode.h:232") /* pc=_stext+0x544bf3 */
kernel.function("BTRFS_I@fs/btrfs/btrfs_inode.h:232") /* pc=_stext+0x53fdf5 */
kernel.function("BTRFS_I@fs/btrfs/btrfs_inode.h:232") /* pc=_stext+0x544cd8 */
kernel.function("BTRFS_I@fs/btrfs/btrfs_inode.h:232") /* pc=_stext+0x53fe24 */
kernel.function("BTRFS_I@fs/btrfs/btrfs_inode.h:232") /* pc=_stext+0x53fdfe */
...
|
When using a current checkout of systemtap from the git repository I found that the following no longer included the pc address of the probe point: $ ../install/bin/stap -v -L 'kernel.function("BTRFS_I")' Pass 1: parsed user script and 792 library scripts using 3480940virt/3246072res/12984shr/3233236data kb, in 7720usr/700sys/8499real ms. kernel.function("BTRFS_I@fs/btrfs/btrfs_inode.h:231") kernel.function("BTRFS_I@fs/btrfs/btrfs_inode.h:231") kernel.function("BTRFS_I@fs/btrfs/btrfs_inode.h:231") kernel.function("BTRFS_I@fs/btrfs/btrfs_inode.h:231") With the recently released systemtap-4.5 on fedora 34 see: $ stap -v -L 'kernel.function("BTRFS_I")' Pass 1: parsed user script and 791 library scripts using 3479644virt/3245148res/12412shr/3232604data kb, in 7840usr/660sys/8549real ms. kernel.function("BTRFS_I@fs/btrfs/btrfs_inode.h:231") /* pc=_stext+0x53a068 */ kernel.function("BTRFS_I@fs/btrfs/btrfs_inode.h:231") /* pc=_stext+0x539ff8 */ kernel.function("BTRFS_I@fs/btrfs/btrfs_inode.h:231") /* pc=_stext+0x539f83 */ kernel.function("BTRFS_I@fs/btrfs/btrfs_inode.h:231") /* pc=_stext+0x5373d3 */ ... Did a binary bisect and tracked the problem down to git commit 545535f8238fe2493dd7b2d415dfa12174284581: Author: Timm Bäder <tbaeder@redhat.com> 2021-05-19 16:38:30 Committer: Aaron Merey <amerey@redhat.com> 2021-05-19 16:38:30 Parent: 0f4bd3219711e8918eac77c77a1de521832d3dbe (set2: Return this from assignment operator) Child: b3a3929751695310b93ff35f41e68775804cee00 (Fix -Wformat-nonliteral and -Wformat warnings with clang) Branches: master, remotes/origin/master Follows: release-4.5 Precedes: Fix -Woverloaded-virtual warnings when building with clang Satisfy clang by removing option for non-nested signature printing from implementations of printsig and declare derived_probe::printsig with 'override'. Add function derived_probe::printsig_nonest to perform non-nested signature printing.