lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Thu, 20 Dec 2018 07:31:55 +0000
From:   Yonghong Song <yhs@...com>
To:     netdev <netdev@...r.kernel.org>
CC:     Alexei Starovoitov <ast@...nel.org>,
        Daniel Borkmann <daniel@...earbox.net>,
        Brendan Gregg <brendan.d.gregg@...il.com>,
        "Kernel Team" <Kernel-team@...com>
Subject: update on llvm BTF support


Hi,

This is an update of llvm BTF support.

The patches corresponding to 
https://reviews.llvm.org/{D55755,D55756,D55752} have been accepted and 
merged.
The llvm BTF support will be in llvm 8.0 whose release
time is around next March.

So with latest llvm/clang trunk, add -g to your compilation
flag, .BTF and .BTF.ext will be generated.
If you are curious about encoding, -S will produce an
assembly code including .BTF/.BTF.ext.

Thanks!

Yonghong

On 12/17/18 2:45 PM, Yonghong Song wrote:
> Hi,
> 
> As many of you already knew, latest bpf-next/net-next
> kernel added supports for func_info and line_info.
>     https://www.mail-archive.com/netdev@vger.kernel.org/msg255580.html
>     https://www.mail-archive.com/netdev@vger.kernel.org/msg257914.html
>     https://www.mail-archive.com/netdev@vger.kernel.org/msg272974.html
> 
> The func info and line info enables better ksym, correlation of
> xlated/jited code with source code, and better source-annotated
> verifier log. perf will be enhanced later to pick up
> such debug info so better information can be displayed for hot
> bpf programs.
> 
> Patch https://reviews.llvm.org/D53736
> =====================================
> 
> Currently, the func info and line info are generated by LLVM
> unmerged patch https://reviews.llvm.org/D53736. As stated in
> the commit message of D53726, the main advantage of implementing
> in LLVM is:
>     . better integration/deployment as no extra tools are needed.
>     . bpf JIT based compilation (like bcc, bpftrace, etc.) can get
>       BTF without much extra effort.
>     . BTF line_info needs selective source codes, which can be
>       easily retrieved when inside the compiler.
> 
> Not in the above list is the future work related to
> compile once and run everywhere (https://lwn.net/Articles/773198/),
> which needs strong type. Such strong type is only available
> in llvm IR. So implementation will have to be in llvm as well.
> 
> The llvm patch D53736 has been submitted on Oct 25, 2018.
> The patch implemented BTF as a first class debug info, meaning
> in a similar way to that Dwarf or CodeView debug info is generated.
> The implementation is mainly placed under
>     llvm/lib/CodeGen/AsmPrinter
> directory. Since BTF currently is only used by BPF, cmake
> file is changed to allow compilation of main BTFDebug.c only
> if BPF is in the llvm build target list. Otherwise, a
> stub implementation is used.
> 
> After initial review by Adrian Prantl where all comments
> are addressed, the patch became dormand since Nov 16, except some
> minor stylish review by Fangrui Song.
> 
> Patch https://reviews.llvm.org/{D55755,D55756,D55752}
> =====================================================
> 
> During review of D53736, on Nov 16, I commented it was possible
> to move main file BTFDebug.cpp to lib/Target/BPF
> directory if moving some DebugInfo private headers
> to llvm:include/llvm/CodeGen directory. But I never
> got an answer whether this is a good idea or not.
> 
> Since review has dragged so long, to help facilitate discussion,
> last weekend, I went ahead and implemented this scheme
> with three patches in phabricator:
>     https://reviews.llvm.org/D55755: refactor to move three DebugInfo
>        private files into llvm:include/llvm/CodeGen directory.
>     https://reviews.llvm.org/D55756: expose some private AsmPrinter
>        members to protected so target extended AsmPrinter can use
>        it to add their own DebugInfo handlers.
>     https://reviews.llvm.org/D55752
>        everything else is inside BPF directory.
> 
> This approach kept BTF completely under lib/Target/BPF
> if patches D55755 and D55756 are implemented to enable
> target specific debug info handlers.
> 
> Recap of two Approaches
> =======================
> 
> To recap,
>     https://reviews.llvm.org/D53736:
>        everything in the llvm core, BTF is a "first-class" debug info.
>        lib/Target/BPF unchanged.
>     https://reviews.llvm.org/{D55755,D55756,D55752}:
>        Some changes related DebugInfo to allow target specific
>        debug info handlers.
>        Major changes will be under /lib/Target/BPF.
> At this point, it is not clear which approach will be accepted
> by the community.
> 
> Going Forward
> =============
> 
> We will continue to engage with LLVM community for integrating
> BTF generation. Any help we can get from you should be helpful
> and will be really appreciated.
> 
> Thanks,
> 
> Yonghong
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ