#!/usr/bin/env python # # USAGE: test_uprobe2.py # # Copyright 2020 Facebook, Inc # Licensed under the Apache License, Version 2.0 (the "License") from bcc import BPF from unittest import main, TestCase from subprocess import Popen, PIPE from tempfile import NamedTemporaryFile class TestUprobes(TestCase): def setUp(self): lib_text = b""" __attribute__((__visibility__("default"))) void fun() { } """ self.bpf_text = """ int trace_fun_call(void *ctx) {{ return 1; }} """ # Compile and run the application self.ftemp = NamedTemporaryFile(delete=False) self.ftemp.close() comp = Popen([ "gcc", "-x", "c", "-shared", "-Wl,-Ttext-segment,0x2000000", "-o", self.ftemp.name, "-" ], stdin=PIPE) comp.stdin.write(lib_text) comp.stdin.close() self.assertEqual(comp.wait(), 0) def test_attach1(self): b = BPF(text=self.bpf_text) b.attach_uprobe(name=self.ftemp.name, sym="fun", fn_name="trace_fun_call") if __name__ == "__main__": main()