[llvm-dev] Using BPF outside the Linux kernel

Jack May via llvm-dev llvm-dev at lists.llvm.org
Wed Nov 14 08:11:26 PST 2018


Hello llvm-dev,

I'm working on a project that is looking at using BPF as the underlying
instruction set for running programs in a protected environment.  We have a
working prototype but have run into a few issues and missing
functionality.  It appears these might be due to BPF development being
focused on usage in the Linux kernel.  Our requirements are broader
(rodata, shared objects with dynamic linking) and we hope to compile
multiple languages down to BPF (C/C++, Rust, ...).  Here is an example of
the issues or missing functionality we've run into so far:

- 512 byte stack size limitation
- No support for returning structures from functions
- No support in lld for BPF shared objects (though we have made local
changes that adds this support that we'd be happy to upstream)
- llc reporting unsupported relocations when C using rodata in a typical way

Are there any efforts underway to broaden the scope of BPF beyond the Linux
kernel requirements and what kind of other issues or known lack of support
may we encounter?

Thanks,
Jack
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20181114/9600a7b6/attachment.html>


More information about the llvm-dev mailing list