- 02 May, 2018 3 commits
-
-
Yonghong Song authored
The clang commit https://reviews.llvm.org/rL331155 changed the clang::SourceManager function prototype SourceRange getExpansionRange(SourceRange Range) to CharSourceRange getExpansionRange(SourceRange Range) and caused the following compilation failure: /home/yhs/work/bcc/src/cc/frontends/clang/b_frontend_action.cc: In member function ‘clang::SourceRange ebpf::ProbeVisitor::expansionRange(clang::SourceRange)’: /home/yhs/work/bcc/src/cc/frontends/clang/b_frontend_action.cc:267:58: error: could not convert ‘(&(&((ebpf::ProbeVisitor *)this)->ebpf::ProbeVisitor::rewriter_) ->clang::Rewriter::getSourceMgr())->clang::SourceManager::getExpansionRange(range)’ from ‘clang::CharSourceRange’ to ‘clang::SourceRange’ return rewriter_.getSourceMgr().getExpansionRange(range); ^ ... It is hard to find a compatible change which works for both old llvm and the latest change. So this patch just fixed the problem for clang 7.0.0 and the old code is used for clang 6.x and lower. Signed-off-by: Yonghong Song <yhs@fb.com>
-
yonghong-song authored
Detect external pointers from context argument
-
Paul Chaignon authored
-
- 01 May, 2018 2 commits
-
-
Paul Chaignon authored
The bcc rewriter is currently unable to detect external pointers (i.e., to a memory address that requires calls to bpf_probe_read) if they are not declared as arguments, e.g., if they are retrieved through the context argument. For example, although the two following examples translate to the same C code in the end (the bcc rewriter translates the first into the second), the sk pointer is recognized as an external pointer only in the first example. int test1(struct pt_regs *ctx, struct sock *sk) { // sk is correctly recognized as an external pointer. } int test2(struct pt_regs *ctx) { struct sock *sk = (struct sock *)ctx->di; // sk is not recognized as an external pointer. } This commit fixes that by detecting member dereferences of the context argument (i.e., the first argument of externally visible functions). It also works for the TRACEPOINT_PROBE macro.
-
Paul Chaignon authored
-
- 30 Apr, 2018 7 commits
-
-
yonghong-song authored
fix compilation with latest clang/llvm 7.0
-
yonghong-song authored
profile: update --stack-storage-size default value in help message
-
Tommaso Sardelli authored
-
Tommaso Sardelli authored
-
Yonghong Song authored
The bcc build with latest clang/llvm 7.0 has the following compilation error: /home/yhs/work/llvm/build/install/lib/libclangCodeGen.a(CodeGenAction.cpp.o): In function `clang::BackendConsumer::Initialize(clang::ASTContext&)': CodeGenAction.cpp:(.text._ZN5clang15BackendConsumer10InitializeERNS_10ASTContextE[_ZN5clang15BackendConsumer10InitializeERNS_10ASTContextE]+0xc): undefined reference to `clang::FrontendTimesIsEnabled' ... The latest clang defined clang::FrontendTimesIsEnabled in libclangFrontend.a and used in libclangCodeGen.a. Due to the library order specified in clang_libs.cmake: # order is important set(clang_libs ${libclangFrontend} ... ${libclangCodeGen} and the fact clang_libs here is used to build bcc-static, the definition of clang::FrontendTimesIsEnabled is dropped since nobody used it before the definition is checked by the compiler. The fix here is to keep all the definitions/uses for clang_libs/llvm_libs when buildint static library. Tested on clang 4.0, 5.0, 6.0 and latest 7.0, all works fine. Signed-off-by: Yonghong Song <yhs@fb.com>
-
4ast authored
docs: update BPF features list (tracepoints to debug eBPF were removed)
-
Quentin Monnet authored
Tracepoints for debugging eBPF were removed from the kernel (some other mechanisms were being used instead, and they were not used often enough to get proper maintenance). Let's specify this on the related line in BPF features doc.
-
- 29 Apr, 2018 6 commits
-
-
4ast authored
introduce {attach|detach}_raw_tracepoint API
-
yonghong-song authored
Update docs/kernel_versions
-
Quentin Monnet authored
Update list of main features and supported map types. Also update list of architectures supporting JIT, and main features list, with important upcoming changes (x86_32 for JIT, bpfilter and AF_XDP for main features). Also add notes on top of the lists about how to obtain the items of each list. Remove speculative map types with no link or schedule.
-
Quentin Monnet authored
- Update links in doc (make them point from net-next to linux, when relevant). - Add helpers bpf_xdp_adjust_tail() and bpf_skb_get_xfrm_state() to documentation and headers. - Synchronise helpers with latest net-next.
-
Yonghong Song authored
The motivation comes from pull request #1689. It attached a kprobe bpf program to kernel function ttwu_do_wakeup for more accurate tracing. Unfortunately, it broke runqlat.py in my 4.17 environment since ttwu_do_wakeup function is inlined in my kernel with gcc 7.3.1. 4.17 introduced raw_tracepoint and this patch added the relevant API to bcc. With this, we can use tracepoints sched:{sched_wakeup, sched_wakeup_new, sched_switch} to measure runq latency more reliably. Signed-off-by: Yonghong Song <yhs@fb.com>
-
yonghong-song authored
Misc improvements to C++ API and example
-
- 28 Apr, 2018 1 commit
-
-
Teng Qin authored
-
- 27 Apr, 2018 5 commits
-
-
Teng Qin authored
-
Teng Qin authored
-
4ast authored
introduce C++ get_syscall_fnname API
-
yonghong-song authored
Support Cgroup Array in BCC
-
Yonghong Song authored
This fixed issue #1695 for C++. The example HelloWorld.cc and tests test_libbcc also got fixed. Signed-off-by: Yonghong Song <yhs@fb.com>
-
- 26 Apr, 2018 9 commits
-
-
yonghong-song authored
document cflags argument to BPF()
-
Matthew Ahrens authored
-
yonghong-song authored
Refactor profile.py stack id error handling
-
4ast authored
using get_syscall_fnname to get kprobe func name for tools
-
Teng Qin authored
-
Teng Qin authored
-
Teng Qin authored
-
Teng Qin authored
-
yonghong-song authored
Refactor offwaketime stack id error handling
-
- 25 Apr, 2018 4 commits
-
-
Matthew Ahrens authored
-
Teng Qin authored
-
4ast authored
introduce new BPF APIs to get kernel syscall entry func name/prefix
-
Yonghong Song authored
Fixed tools which are attached to syscall entry functions "sys_*". Instead, use get_syscall_fnname to get proper names. Signed-off-by: Yonghong Song <yhs@fb.com>
-
- 24 Apr, 2018 3 commits
-
-
Yonghong Song authored
As described in issue #1695, on 4.17 for syscalls on x86, both sys_<fnname> and SyS_<fnname> are gone, the replacements are __ia32_sys_sync and __x64_sys_sync. The commit in Linus tree: https://github.com/torvalds/linux/commit/d5a00528b58cdb2c71206e18bd021e34c4eab878 This patch introduced two APIs for python BPF object. The API get_syscall_prefix() returns the prefix "sys_"/"__x64_sys_". The API get_syscall_fnname(name) returns kernel function name for the syscall, e.g., on x64, get_syscall_fnname("clone") will return "sys_clone" if kernel has it, otherwise, "__x64_sys_clone". get_syscall_prefix() is mostly useful for the regex func specifier of attach_kprobe(). This patch only fixed the code using python API on examples and tests directory. TOTO: python on tools directory, C++ and lua Signed-off-by: Yonghong Song <yhs@fb.com>
-
4ast authored
print out more useful attach_kprobe failure information
-
Yonghong Song authored
As stated in issue #1695, the following commit https://github.com/torvalds/linux/commit/5c8dad48e4f53d6fd0a7e4f95d7c1c983374de88 removed corresponding dmesg when attach_kprobe failed, and userspace needs to print out proper error messages. Signed-off-by: Yonghong Song <yhs@fb.com>
-