Skip to content

Commit db5b6a1

Browse files
committed
Replace inline USDT implementation with github.com/parca-dev/usdt
- pfelf.USDTProbe is now a type alias for usdt.Probe - pfelf.ParseUSDTProbes() delegates to usdt.ParseProbes() via adapter - pfelf.ParseUSDTArguments/USDTSpecToBytes delegate to usdt package - pfelfELFReader adapter implements usdt.ELFReader interface - All consumers (interpreter, processmanager, gpu, coredump) continue working transparently via the type alias
1 parent 96c49d2 commit db5b6a1

16 files changed

Lines changed: 312 additions & 830 deletions

File tree

Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
Apache License
2+
Version 2.0, January 2004
3+
http://www.apache.org/licenses/
4+
5+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6+
7+
1. Definitions.
8+
9+
"License" shall mean the terms and conditions for use, reproduction,
10+
and distribution as defined by Sections 1 through 9 of this document.
11+
12+
"Licensor" shall mean the copyright owner or entity granting the License.
13+
14+
"Legal Entity" shall mean the union of the acting entity and all
15+
other entities that control, are controlled by, or are under common
16+
control with that entity. For the purposes of this definition,
17+
"control" means (i) the power, direct or indirect, to cause the
18+
direction or management of such entity, whether by contract or
19+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
20+
outstanding shares, or (iii) beneficial ownership of such entity.
21+
22+
"You" (or "Your") shall mean an individual or Legal Entity
23+
exercising permissions granted by this License.
24+
25+
"Source" shall mean the preferred form for making modifications,
26+
including but not limited to software source code, documentation
27+
source, and configuration files.
28+
29+
"Object" shall mean any form resulting from mechanical
30+
transformation or translation of a Source form, including but
31+
not limited to compiled object code, generated documentation,
32+
and conversions to other media types.
33+
34+
"Work" shall mean the work of authorship, whether in Source or
35+
Object form, made available under the License, as indicated by a
36+
copyright notice that is included in or attached to the work
37+
(which shall not include combinations of the Work with other works).
38+
39+
"Derivative Works" shall mean any work, whether in Source or Object
40+
form, that is based upon (or derived from) the Work and for which the
41+
editorial revisions, annotations, elaborations, or other modifications
42+
represent, as a whole, an original work of authorship. For the purposes
43+
of this License, Derivative Works shall not include works that remain
44+
separable from, or merely link (or bind by name) to the interfaces of,
45+
the Work and derivative works thereof.
46+
47+
"Contribution" shall mean any work of authorship, including
48+
the original version of the Work and any modifications or additions
49+
to that Work or Derivative Works thereof, that is intentionally
50+
submitted to Licensor for inclusion in the Work by the copyright owner
51+
or by an individual or Legal Entity authorized to submit on behalf of
52+
the copyright owner. For the purposes of this definition, "submitted"
53+
means any form of electronic, verbal, or written communication sent
54+
to the Licensor or its representatives, including but not limited to
55+
communication on electronic mailing lists, source code control
56+
systems, and issue tracking systems that are managed by, or on behalf
57+
of, the Licensor for the purpose of discussing and improving the Work,
58+
but excluding communication that is conspicuously marked or otherwise
59+
designated in writing by the copyright owner as "Not a Contribution."
60+
61+
"Contributor" shall mean Licensor and any individual or Legal Entity
62+
on behalf of whom a Contribution has been received by Licensor and
63+
subsequently incorporated within the Work.
64+
65+
2. Grant of Copyright License. Subject to the terms and conditions of
66+
this License, each Contributor hereby grants to You a perpetual,
67+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
68+
copyright license to use, reproduce, modify, distribute, prepare
69+
Derivative Works of, and publicly display the Work and such Derivative
70+
Works in all media and formats whether now known or hereafter devised.
71+
72+
3. Grant of Patent License. Subject to the terms and conditions of
73+
this License, each Contributor hereby grants to You a perpetual,
74+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
75+
(except as stated in this section) patent license to make, have made,
76+
use, offer to sell, sell, import, and otherwise transfer the Work,
77+
where such license applies only to those patent claims licensable
78+
by such Contributor that are necessarily infringed by their
79+
Contribution(s) alone or by combination of their Contribution(s)
80+
with the Work to which such Contribution(s) was submitted. If You
81+
institute patent litigation against any entity (including a
82+
cross-claim or counterclaim in a lawsuit) alleging that the Work
83+
or a Contribution incorporated within the Work constitutes direct
84+
or contributory patent infringement, then any patent licenses
85+
granted to You under this License for that Work shall terminate
86+
as of the date such litigation is filed.
87+
88+
4. Redistribution. You may reproduce and distribute copies of the
89+
Work or Derivative Works thereof in any medium, with or without
90+
modifications, and in Source or Object form, provided that You
91+
meet the following conditions:
92+
93+
(a) You must give any other recipients of the Work or
94+
Derivative Works a copy of this License; and
95+
96+
(b) You must cause any modified files to carry prominent notices
97+
stating that You changed the files; and
98+
99+
(c) You must retain, in the Source form of any Derivative Works
100+
that You distribute, all copyright, patent, trademark, and
101+
attribution notices from the Source form of the Work,
102+
excluding those notices that do not pertain to any part of
103+
the Derivative Works; and
104+
105+
(d) If the Work includes a "NOTICE" text file as part of its
106+
distribution, then any Derivative Works that You distribute must
107+
include a readable copy of the attribution notices contained
108+
within such NOTICE file, excluding those notices that do not
109+
pertain to any part of the Derivative Works, in at least one
110+
of the following places: within a NOTICE text file distributed
111+
as part of the Derivative Works; within the Source form or
112+
documentation, if provided along with the Derivative Works; or,
113+
within a display generated by the Derivative Works, if and
114+
wherever such third-party notices normally appear. The contents
115+
of the NOTICE file are for informational purposes only and
116+
do not modify the License. You may add Your own attribution
117+
notices within Derivative Works that You distribute, alongside
118+
or as an addendum to the NOTICE text from the Work, provided
119+
that such additional attribution notices cannot be construed
120+
as modifying the License.
121+
122+
You may add Your own copyright notice to Your modifications and
123+
may provide additional or different license terms and conditions
124+
for use, reproduction, or distribution of Your modifications, or
125+
for any such Derivative Works as a whole, provided Your use,
126+
reproduction, and distribution of the Work otherwise complies with
127+
the conditions stated in this License.
128+
129+
5. Submission of Contributions. Unless You explicitly state otherwise,
130+
any Contribution intentionally submitted for inclusion in the Work
131+
by You to the Licensor shall be under the terms and conditions of
132+
this License, without any additional terms or conditions.
133+
Notwithstanding the above, nothing herein shall supersede or modify
134+
the terms of any separate license agreement you may have executed
135+
with Licensor regarding such Contributions.
136+
137+
6. Trademarks. This License does not grant permission to use the trade
138+
names, trademarks, service marks, or product names of the Licensor,
139+
except as required for reasonable and customary use in describing the
140+
origin of the Work and reproducing the content of the NOTICE file.
141+
142+
7. Disclaimer of Warranty. Unless required by applicable law or
143+
agreed to in writing, Licensor provides the Work (and each
144+
Contributor provides its Contributions) on an "AS IS" BASIS,
145+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
146+
implied, including, without limitation, any warranties or conditions
147+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
148+
PARTICULAR PURPOSE. You are solely responsible for determining the
149+
appropriateness of using or redistributing the Work and assume any
150+
risks associated with Your exercise of permissions under this License.
151+
152+
8. Limitation of Liability. In no event and under no legal theory,
153+
whether in tort (including negligence), contract, or otherwise,
154+
unless required by applicable law (such as deliberate and grossly
155+
negligent acts) or agreed to in writing, shall any Contributor be
156+
liable to You for damages, including any direct, indirect, special,
157+
incidental, or consequential damages of any character arising as a
158+
result of this License or out of the use or inability to use the
159+
Work (including but not limited to damages for loss of goodwill,
160+
work stoppage, computer failure or malfunction, or any and all
161+
other commercial damages or losses), even if such Contributor
162+
has been advised of the possibility of such damages.
163+
164+
9. Accepting Warranty or Support. You are not required to accept
165+
warranty or support for the Work from any Contributor. However,
166+
you may choose to offer and charge a fee for warranty, support,
167+
indemnity or other liability obligations consistent with this
168+
License. When accepting any such obligations on your own behalf
169+
or on behalf of another Contributor, you must obtain the
170+
Contributor's express prior written consent and acknowledge
171+
that the Contributor may be liable to You for any damages
172+
incurred by You as a result of accepting such warranty or support.
173+
174+
END OF TERMS AND CONDITIONS
175+
176+
APPENDIX: How to apply the Apache License to your work.
177+
178+
To apply the Apache License to your work, attach the following
179+
boilerplate notice, with the fields enclosed by brackets "[]"
180+
replaced with your own identifying information. Don't include
181+
the brackets! The text should be enclosed in the appropriate
182+
comment syntax for the file format. We also recommend that a
183+
file or class name and description of purpose be included on the
184+
same "license" line as the copyright notice for easier
185+
identification within third-party archives.
186+
187+
Copyright [yyyy] [name of copyright owner]
188+
189+
Licensed under the Apache License, Version 2.0 (the "License");
190+
you may not use this file except in compliance with the License.
191+
You may obtain a copy of the License at
192+
193+
http://www.apache.org/licenses/LICENSE-2.0
194+
195+
Unless required by applicable law or agreed to in writing, software
196+
distributed under the License is distributed on an "AS IS" BASIS,
197+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
198+
See the License for the specific language governing permissions and
199+
limitations under the License.

go.mod

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ require (
1414
github.com/aws/aws-sdk-go-v2 v1.41.2
1515
github.com/aws/aws-sdk-go-v2/config v1.32.10
1616
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.2
17-
github.com/cilium/ebpf v0.20.0
17+
github.com/cilium/ebpf v0.21.0
1818
github.com/coreos/pkg v0.0.0-20240122114842-bbd7aa9bf6fb
1919
github.com/docker/go-connections v0.6.0
2020
github.com/elastic/go-freelru v0.16.0
@@ -25,6 +25,7 @@ require (
2525
github.com/minio/sha256-simd v1.0.1
2626
github.com/open-telemetry/sig-profiling/tools/profcheck v0.0.0-20260227083359-da7d53b22766
2727
github.com/parca-dev/oomprof v0.1.6
28+
github.com/parca-dev/usdt v0.0.1
2829
github.com/peterbourgon/ff/v3 v3.4.0
2930
github.com/sirupsen/logrus v1.9.4
3031
github.com/stretchr/testify v1.11.1
@@ -79,7 +80,7 @@ require (
7980
github.com/containerd/log v0.1.0 // indirect
8081
github.com/containerd/platforms v0.2.1 // indirect
8182
github.com/cpuguy83/dockercfg v0.3.2 // indirect
82-
github.com/davecgh/go-spew v1.1.1 // indirect
83+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
8384
github.com/distribution/reference v0.6.0 // indirect
8485
github.com/docker/docker v28.5.1+incompatible // indirect
8586
github.com/docker/go-units v0.5.0 // indirect
@@ -103,7 +104,7 @@ require (
103104
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
104105
github.com/magiconair/properties v1.8.10 // indirect
105106
github.com/mdlayher/netlink v1.7.2 // indirect
106-
github.com/mdlayher/socket v0.4.1 // indirect
107+
github.com/mdlayher/socket v0.5.1 // indirect
107108
github.com/mitchellh/copystructure v1.2.0 // indirect
108109
github.com/mitchellh/reflectwalk v1.0.2 // indirect
109110
github.com/moby/docker-image-spec v1.3.1 // indirect
@@ -119,7 +120,7 @@ require (
119120
github.com/opencontainers/go-digest v1.0.0 // indirect
120121
github.com/opencontainers/image-spec v1.1.1 // indirect
121122
github.com/pkg/errors v0.9.1 // indirect
122-
github.com/pmezard/go-difflib v1.0.0 // indirect
123+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
123124
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
124125
github.com/shirou/gopsutil/v4 v4.25.6 // indirect
125126
github.com/tklauser/go-sysconf v0.3.12 // indirect

go.sum

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK3
4848
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
4949
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
5050
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
51-
github.com/cilium/ebpf v0.20.0 h1:atwWj9d3NffHyPZzVlx3hmw1on5CLe9eljR8VuHTwhM=
52-
github.com/cilium/ebpf v0.20.0/go.mod h1:pzLjFymM+uZPLk/IXZUL63xdx5VXEo+enTzxkZXdycw=
51+
github.com/cilium/ebpf v0.21.0 h1:4dpx1J/B/1apeTmWBH5BkVLayHTkFrMovVPnHEk+l3k=
52+
github.com/cilium/ebpf v0.21.0/go.mod h1:1kHKv6Kvh5a6TePP5vvvoMa1bclRyzUXELSs272fmIQ=
5353
github.com/containerd/cgroups/v3 v3.0.5 h1:44na7Ud+VwyE7LIoJ8JTNQOa549a8543BmzaJHo6Bzo=
5454
github.com/containerd/cgroups/v3 v3.0.5/go.mod h1:SA5DLYnXO8pTGYiAHXz94qvLQTKfVM5GEVisn4jpins=
5555
github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=
@@ -69,8 +69,9 @@ github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHf
6969
github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=
7070
github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
7171
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
72-
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
7372
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
73+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
74+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
7475
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
7576
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
7677
github.com/docker/docker v28.5.1+incompatible h1:Bm8DchhSD2J6PsFzxC35TZo4TLGR2PdW/E69rU45NhM=
@@ -153,8 +154,8 @@ github.com/mdlayher/netlink v1.0.0/go.mod h1:KxeJAFOFLG6AjpyDkQ/iIhxygIUKD+vcwqc
153154
github.com/mdlayher/netlink v1.1.0/go.mod h1:H4WCitaheIsdF9yOYu8CFmCgQthAPIWZmcKp9uZHgmY=
154155
github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g=
155156
github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw=
156-
github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U=
157-
github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA=
157+
github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos=
158+
github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ=
158159
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
159160
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
160161
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
@@ -195,12 +196,15 @@ github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE
195196
github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
196197
github.com/parca-dev/oomprof v0.1.6 h1:potfd09aphNKqsIF54ZsiddTvksVMjQiaKnczFOsVGM=
197198
github.com/parca-dev/oomprof v0.1.6/go.mod h1:iqI6XrmiNWOa8m2vEIKo+GtQrqbWCMLFpBWuk8RuAPs=
199+
github.com/parca-dev/usdt v0.0.1 h1:Qm7ZyJdbUQcNODq/2+o3gbFJ1Tp6XjJiI4mt3Qim+ek=
200+
github.com/parca-dev/usdt v0.0.1/go.mod h1:XV3Guz49GhTH+0sWSXCoYdc8BtpZSoe9F0EGlBDd3aI=
198201
github.com/peterbourgon/ff/v3 v3.4.0 h1:QBvM/rizZM1cB0p0lGMdmR7HxZeI/ZrBWB4DqLkMUBc=
199202
github.com/peterbourgon/ff/v3 v3.4.0/go.mod h1:zjJVUhx+twciwfDl0zBcFzl4dW8axCRyXE/eKY9RztQ=
200203
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
201204
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
202-
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
203205
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
206+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
207+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
204208
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
205209
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
206210
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=

0 commit comments

Comments
 (0)