Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
b30ea89
feat: replace Intel Pin with bpftrace + native Go ELF shim
ilmanzo May 12, 2026
4d5235c
fix(shim): replace broken parseLibs with json.Unmarshal
ilmanzo May 12, 2026
200ead6
fix(shim): pass image path as bpftrace arg, not format string
ilmanzo May 12, 2026
6224207
fix: handle previously ignored read errors
ilmanzo May 12, 2026
39310e2
fix(report): deterministic function order in text report
ilmanzo May 12, 2026
f9582fc
refactor(report): cache safeName regexp; reuse splitCalledUncalled
ilmanzo May 12, 2026
a255dc4
refactor: use slices.SortFunc + cmp.Compare in enumerate output
ilmanzo May 12, 2026
f8e7fc3
refactor(enumerate): parse ldd output with single regexp
ilmanzo May 12, 2026
8718aea
refactor(shim): extract helpers and centralise cleanup in runWithTracing
ilmanzo May 12, 2026
dbc229c
refactor(cli): replace 150-line main switch with a command dispatch t…
ilmanzo May 12, 2026
d7db7ab
refactor: extract shared helpers into internal/funkutil package
ilmanzo May 12, 2026
f82e9fe
style: gofmt freshly-added shim and funkutil_test files
ilmanzo May 12, 2026
a7bd2fd
fix(shim): drop sched_process_exit cleanup + accept "Attached" msg
ilmanzo May 12, 2026
aaccb6b
fix(enumerate): drop glibc/runtime libs from sidecar tracing
ilmanzo May 12, 2026
aba97d4
fix(enumerate): prefer ELF symtab over DWARF
ilmanzo May 12, 2026
15bbb03
feat: support dwz-compressed debug files via .gnu_debugaltlink
ilmanzo May 12, 2026
e9ad0ad
refactor: move dwz debug discovery to install phase via eu-unstrip
ilmanzo May 12, 2026
d4b6c89
fix: enumerate functions after merging debug info
ilmanzo May 12, 2026
3652eb0
fix: eu-unstrip --force for PIE binaries with relocatable debug
ilmanzo May 12, 2026
9763e6c
fix: externalDebugPath must use Contains for orphaned dwz files like …
ilmanzo May 12, 2026
c98c01e
feat: enumerate and trace library functions without debug info
ilmanzo May 12, 2026
9d8b361
Fix ringbuf drain race: defer reader.Close() after detach to allow in…
ilmanzo May 12, 2026
5c4d2d4
chore: ignore binary object files
ilmanzo May 12, 2026
4785159
feat: implement eBPF-based function coverage (funkoverage)
ilmanzo May 12, 2026
2a478e5
fix: address PR review — error handling, idempotent Stop, stale bpftr…
ilmanzo May 13, 2026
5ebfbcf
feat: add E2E system binary tests, remove unused catch2
ilmanzo May 13, 2026
5d53fdb
feat: add --include/--exclude regex function filters
ilmanzo May 13, 2026
d81df7e
Potential fix for pull request finding
ilmanzo May 13, 2026
4e44c6a
fix: align tracer BPF file SPDX header with project license
Copilot May 13, 2026
92c2e62
fix: check scanner.Err() after reading log files in analyzeLogs
Copilot May 13, 2026
5f8c33e
refactor: use defer for file closing in analyzeLogs
Copilot May 13, 2026
0817859
chore: add dual licensing (MIT + GPL-2.0-only for eBPF code)
ilmanzo May 13, 2026
aea66d2
update Go dependencies and bump pkg version
ilmanzo May 13, 2026
9b5816e
update README and improve unit test coverage
ilmanzo May 13, 2026
450aeaa
refactor: modernize code, extract helpers, fix resource leaks
ilmanzo May 13, 2026
8dbaeb7
docs: add docs/design.md with architecture diagrams + clean obsolete …
ilmanzo May 13, 2026
6330561
docs: add installation guide and dlopen() limitation
ilmanzo May 13, 2026
8dd00f7
ci: upgrade actions to Node.js 24 (checkout@v6, setup-go@v6)
ilmanzo May 13, 2026
577389a
avoid useless nil checking
ilmanzo May 13, 2026
1fa6d05
feat: add ARM64 support alongside x86_64
ilmanzo May 13, 2026
39b92ee
docs: remove obsolete bpftrace scaling docs
ilmanzo May 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v6

- name: Install required tools
run: sudo apt update && sudo apt install -y g++ curl
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.26'

- name: Make build.sh executable
run: chmod +x ./build.sh
Expand Down
20 changes: 13 additions & 7 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,26 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v6

- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.26'

- name: Install required tools
run: sudo apt update && sudo apt install -y catch2 gcc golang-go curl make
run: sudo apt update && sudo apt install -y g++ make python3 elfutils

Comment thread
ilmanzo marked this conversation as resolved.
- name: Run unit tests
run: ./run_unit_tests.sh

- name: Build project (for E2E)
- name: Build project
run: |
chmod +x build.sh
./build.sh

- name: Run E2E tests
run: |
chmod +x tests/e2e/test_calc.py
python3 tests/e2e/test_calc.py
- name: Compile sample test binary
run: make -C tests/sample

- name: Run E2E tests (no bpftrace, prerequisites only)
run: sudo python3 tests/e2e/test_coverage.py TestPrerequisites TestInstallUninstall TestEnumerate
14 changes: 7 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
tests/test_func_tracer
example/cov_sample
obj-intel64/
env
funkoverage
cmd/cmd
dynamorio/build/
sysdeps/
funkoverage-shim
tests/sample/sample
__pycache__/
pin.log
.claude/settings.local.json
CLAUDE.md
*.o
!cmd/shim_binary/tracer_x86_bpfel.o
!cmd/shim_binary/tracer_arm64_bpfel.o
104 changes: 0 additions & 104 deletions FuncTracer.cpp

This file was deleted.

33 changes: 0 additions & 33 deletions FuncTracer.hpp

This file was deleted.

25 changes: 25 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
This project uses dual licensing:

- Go userspace code: MIT License
- eBPF kernel code (cmd/shim_binary/bpf/): GPL-2.0-only

The eBPF programs must be GPL-licensed to use GPL-only BPF helpers
(bpf_get_attach_cookie, bpf_ringbuf_reserve, etc.) provided by the kernel.

===========================================================================

MIT License

Copyright (c) 2025 ilmanzo
Expand All @@ -19,3 +29,18 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

===========================================================================

The eBPF programs in cmd/shim_binary/bpf/ are licensed under GPL-2.0-only:

GNU GENERAL PUBLIC LICENSE
Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

See https://www.gnu.org/licenses/old-licenses/gpl-2.0.html for the
full license text.
Loading