lkml.org 
[lkml]   [2016]   [Nov]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v3 19/30] perf clang jit: Insignt BPF and JIT functions in a Module
On Sat, Nov 26, 2016 at 07:03:43AM +0000, Wang Nan wrote:
> Identify BPF functions, JIT functions and maps during init. Functions in
> section starting with "perfhook:" are JIT functions. They will be JIT
> compiled and hooked at perfhooks.
>
> During init of PerfModule, mark JIT functions as AvailableExternallyLinkage.
> LLVM skips functions with linkage like this so they won't be compiled
> into BPF objects.
>
> Signed-off-by: Wang Nan <wangnan0@huawei.com>
...
> +void PerfModule::prepareBPF(void)
> +{
> + for (llvm::Function *F : JITFunctions)
> + F->setLinkage(llvm::GlobalValue::AvailableExternallyLinkage);
> + for (llvm::Function *F : BPFFunctions)
> + F->setLinkage(llvm::GlobalValue::ExternalLinkage);
> +
> +}
> +
> +void PerfModule::prepareJIT(void)
> +{
> + for (llvm::Function *F : BPFFunctions)
> + F->setLinkage(llvm::GlobalValue::AvailableExternallyLinkage);
> + for (llvm::Function *F : JITFunctions)
> + F->setLinkage(llvm::GlobalValue::ExternalLinkage);
> +
> +}

Nice trick.
Please document it in the perf+llvm design doc.

Acked-by: Alexei Starovoitov <ast@kernel.org>

\
 
 \ /
  Last update: 2016-11-26 18:33    [W:0.525 / U:0.412 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site