Skip to content

Add function argument/return value offsetgen support#1

Open
ddelnano wants to merge 33 commits into
pixie-io:mainfrom
ddelnano:ddelnano/add-func-argument-retval-support
Open

Add function argument/return value offsetgen support#1
ddelnano wants to merge 33 commits into
pixie-io:mainfrom
ddelnano:ddelnano/add-func-argument-retval-support

Conversation

@ddelnano

Copy link
Copy Markdown
Member

No description provided.

renovate Bot and others added 30 commits May 28, 2025 14:55
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…pen-telemetry#2380)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…en-telemetry#2381)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…lemetry#2385)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…en-telemetry#2389)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…en-telemetry#2387)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ible (open-telemetry#2386)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…pen-telemetry#2391)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…pen-telemetry#2390)

* chore(deps): update module go.opentelemetry.io/proto/otlp to v1.7.0

* Run go mod tidy

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tyler Yahn <codingalias@gmail.com>
…en-telemetry#2392)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…metry#2395)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ible (open-telemetry#2393)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…e struct lookup works

Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
…d offset generation. Get internal/pkg/structfield package tests passing

Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
…iter struct

Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
…elds

Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
…e interface for process.DWARF struct

Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
ddelnano added a commit to pixie-io/pixie that referenced this pull request Jul 9, 2025
… Uprobes (#2207)

Summary: Add `GoOffsetLocator` that fulfills DwarfReader APIs. Use as
shim for Go Uprobes

Our current Go uprobe implementation relies on parsing DWARF
information. This is memory intensive and is not ideal if end users want
to keep the PEM's memory usage low (results in 100-150MB memory spikes).

In order to support lower memory uprobes and to support Go binaries
without DWARF, we can introduce a shim for the existing DwarfReader API
that can read the offsets from a file (via
openteletrmy-go-instrumentation generated offsets) or from the existing
DWARF information.

This PR introduces the `GoOffsetLocator` and tests that it functions
properly while leaving the DWARF based tracing in place. The next set of
changes will populate the offsets from
pixie-io/opentelemetry-go-instrumentation#1 and
provide configuration to choose the desired implementation: solely
DWARF, solely static offsets or to use them in tandem.

Relevant Issues: N/A

Type of change: /kind feature

Test Plan: Existing Go bpf trace tests should pass

---------

Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
cosmic-copybara pushed a commit to csmc-io/pixie that referenced this pull request Jul 10, 2025
… Uprobes (#2207)

Summary: Add `GoOffsetLocator` that fulfills DwarfReader APIs. Use as
shim for Go Uprobes

Our current Go uprobe implementation relies on parsing DWARF
information. This is memory intensive and is not ideal if end users want
to keep the PEM's memory usage low (results in 100-150MB memory spikes).

In order to support lower memory uprobes and to support Go binaries
without DWARF, we can introduce a shim for the existing DwarfReader API
that can read the offsets from a file (via
openteletrmy-go-instrumentation generated offsets) or from the existing
DWARF information.

This PR introduces the `GoOffsetLocator` and tests that it functions
properly while leaving the DWARF based tracing in place. The next set of
changes will populate the offsets from
pixie-io/opentelemetry-go-instrumentation#1 and
provide configuration to choose the desired implementation: solely
DWARF, solely static offsets or to use them in tandem.

Relevant Issues: N/A

Type of change: /kind feature

Test Plan: Existing Go bpf trace tests should pass

---------

Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
GitOrigin-RevId: 5b20e357cc351cfcc4ea9dcc04cc99ad8812d7f8
ddelnano added a commit to csmc-io/pixie that referenced this pull request Jan 8, 2026
… Uprobes (#2207)

Summary: Add `GoOffsetLocator` that fulfills DwarfReader APIs. Use as
shim for Go Uprobes

Our current Go uprobe implementation relies on parsing DWARF
information. This is memory intensive and is not ideal if end users want
to keep the PEM's memory usage low (results in 100-150MB memory spikes).

In order to support lower memory uprobes and to support Go binaries
without DWARF, we can introduce a shim for the existing DwarfReader API
that can read the offsets from a file (via
openteletrmy-go-instrumentation generated offsets) or from the existing
DWARF information.

This PR introduces the `GoOffsetLocator` and tests that it functions
properly while leaving the DWARF based tracing in place. The next set of
changes will populate the offsets from
pixie-io/opentelemetry-go-instrumentation#1 and
provide configuration to choose the desired implementation: solely
DWARF, solely static offsets or to use them in tandem.

Relevant Issues: N/A

Type of change: /kind feature

Test Plan: Existing Go bpf trace tests should pass

---------

Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
GitOrigin-RevId: 5b20e357cc351cfcc4ea9dcc04cc99ad8812d7f8
ddelnano added a commit to csmc-io/pixie that referenced this pull request Jan 8, 2026
… Uprobes (#2207)

Summary: Add `GoOffsetLocator` that fulfills DwarfReader APIs. Use as
shim for Go Uprobes

Our current Go uprobe implementation relies on parsing DWARF
information. This is memory intensive and is not ideal if end users want
to keep the PEM's memory usage low (results in 100-150MB memory spikes).

In order to support lower memory uprobes and to support Go binaries
without DWARF, we can introduce a shim for the existing DwarfReader API
that can read the offsets from a file (via
openteletrmy-go-instrumentation generated offsets) or from the existing
DWARF information.

This PR introduces the `GoOffsetLocator` and tests that it functions
properly while leaving the DWARF based tracing in place. The next set of
changes will populate the offsets from
pixie-io/opentelemetry-go-instrumentation#1 and
provide configuration to choose the desired implementation: solely
DWARF, solely static offsets or to use them in tandem.

Relevant Issues: N/A

Type of change: /kind feature

Test Plan: Existing Go bpf trace tests should pass

---------

Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
GitOrigin-RevId: 5b20e357cc351cfcc4ea9dcc04cc99ad8812d7f8
ddelnano added a commit to csmc-io/pixie that referenced this pull request Jan 8, 2026
… Uprobes (#2207)

Summary: Add `GoOffsetLocator` that fulfills DwarfReader APIs. Use as
shim for Go Uprobes

Our current Go uprobe implementation relies on parsing DWARF
information. This is memory intensive and is not ideal if end users want
to keep the PEM's memory usage low (results in 100-150MB memory spikes).

In order to support lower memory uprobes and to support Go binaries
without DWARF, we can introduce a shim for the existing DwarfReader API
that can read the offsets from a file (via
openteletrmy-go-instrumentation generated offsets) or from the existing
DWARF information.

This PR introduces the `GoOffsetLocator` and tests that it functions
properly while leaving the DWARF based tracing in place. The next set of
changes will populate the offsets from
pixie-io/opentelemetry-go-instrumentation#1 and
provide configuration to choose the desired implementation: solely
DWARF, solely static offsets or to use them in tandem.

Relevant Issues: N/A

Type of change: /kind feature

Test Plan: Existing Go bpf trace tests should pass

---------

Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
GitOrigin-RevId: 5b20e357cc351cfcc4ea9dcc04cc99ad8812d7f8
ddelnano added a commit to csmc-io/pixie that referenced this pull request Jan 16, 2026
… Uprobes (#2207)

Summary: Add `GoOffsetLocator` that fulfills DwarfReader APIs. Use as
shim for Go Uprobes

Our current Go uprobe implementation relies on parsing DWARF
information. This is memory intensive and is not ideal if end users want
to keep the PEM's memory usage low (results in 100-150MB memory spikes).

In order to support lower memory uprobes and to support Go binaries
without DWARF, we can introduce a shim for the existing DwarfReader API
that can read the offsets from a file (via
openteletrmy-go-instrumentation generated offsets) or from the existing
DWARF information.

This PR introduces the `GoOffsetLocator` and tests that it functions
properly while leaving the DWARF based tracing in place. The next set of
changes will populate the offsets from
pixie-io/opentelemetry-go-instrumentation#1 and
provide configuration to choose the desired implementation: solely
DWARF, solely static offsets or to use them in tandem.

Relevant Issues: N/A

Type of change: /kind feature

Test Plan: Existing Go bpf trace tests should pass

---------

Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
GitOrigin-RevId: 5b20e357cc351cfcc4ea9dcc04cc99ad8812d7f8
ddelnano added a commit to k8sstormcenter/pixie that referenced this pull request Feb 25, 2026
… Uprobes (pixie-io#2207)

Summary: Add `GoOffsetLocator` that fulfills DwarfReader APIs. Use as
shim for Go Uprobes

Our current Go uprobe implementation relies on parsing DWARF
information. This is memory intensive and is not ideal if end users want
to keep the PEM's memory usage low (results in 100-150MB memory spikes).

In order to support lower memory uprobes and to support Go binaries
without DWARF, we can introduce a shim for the existing DwarfReader API
that can read the offsets from a file (via
openteletrmy-go-instrumentation generated offsets) or from the existing
DWARF information.

This PR introduces the `GoOffsetLocator` and tests that it functions
properly while leaving the DWARF based tracing in place. The next set of
changes will populate the offsets from
pixie-io/opentelemetry-go-instrumentation#1 and
provide configuration to choose the desired implementation: solely
DWARF, solely static offsets or to use them in tandem.

Relevant Issues: N/A

Type of change: /kind feature

Test Plan: Existing Go bpf trace tests should pass

---------

Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
ddelnano added a commit to k8sstormcenter/pixie that referenced this pull request Feb 25, 2026
… Uprobes (pixie-io#2207)

Summary: Add `GoOffsetLocator` that fulfills DwarfReader APIs. Use as
shim for Go Uprobes

Our current Go uprobe implementation relies on parsing DWARF
information. This is memory intensive and is not ideal if end users want
to keep the PEM's memory usage low (results in 100-150MB memory spikes).

In order to support lower memory uprobes and to support Go binaries
without DWARF, we can introduce a shim for the existing DwarfReader API
that can read the offsets from a file (via
openteletrmy-go-instrumentation generated offsets) or from the existing
DWARF information.

This PR introduces the `GoOffsetLocator` and tests that it functions
properly while leaving the DWARF based tracing in place. The next set of
changes will populate the offsets from
pixie-io/opentelemetry-go-instrumentation#1 and
provide configuration to choose the desired implementation: solely
DWARF, solely static offsets or to use them in tandem.

Relevant Issues: N/A

Type of change: /kind feature

Test Plan: Existing Go bpf trace tests should pass

---------

Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
entlein pushed a commit to k8sstormcenter/pixie that referenced this pull request Jun 2, 2026
… Uprobes (pixie-io#2207)

Summary: Add `GoOffsetLocator` that fulfills DwarfReader APIs. Use as
shim for Go Uprobes

Our current Go uprobe implementation relies on parsing DWARF
information. This is memory intensive and is not ideal if end users want
to keep the PEM's memory usage low (results in 100-150MB memory spikes).

In order to support lower memory uprobes and to support Go binaries
without DWARF, we can introduce a shim for the existing DwarfReader API
that can read the offsets from a file (via
openteletrmy-go-instrumentation generated offsets) or from the existing
DWARF information.

This PR introduces the `GoOffsetLocator` and tests that it functions
properly while leaving the DWARF based tracing in place. The next set of
changes will populate the offsets from
pixie-io/opentelemetry-go-instrumentation#1 and
provide configuration to choose the desired implementation: solely
DWARF, solely static offsets or to use them in tandem.

Relevant Issues: N/A

Type of change: /kind feature

Test Plan: Existing Go bpf trace tests should pass

---------

Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant