summaryrefslogtreecommitdiff
path: root/scripts/Makefile.thinlto
diff options
context:
space:
mode:
authorYonghong Song <yonghong.song@linux.dev>2026-08-18 22:52:49 -0700
committerEduard Zingerman <eddyz87@gmail.com>2026-08-21 10:49:17 -0700
commitcf5b96d9554815780f864d6f0014ac384e9be59c (patch)
treeb7f8d92c85f44ae6242551786fc9421e12b9ac47 /scripts/Makefile.thinlto
parentda13c047cda6ef1bbc9355adb040d5b4eecea710 (diff)
downloadlinux-next-cf5b96d9554815780f864d6f0014ac384e9be59c.tar.gz
linux-next-cf5b96d9554815780f864d6f0014ac384e9be59c.zip
bpf: Add helpers to describe the R0: R2 return register pair
LLVM 23 added support for returning a value in two registers for an __int128, or a struct/union whose size is greater than 8 but not more than 16 bytes: such a value comes back in the R0:R2 register pair, with R2 holding the upper half. See LLVM patches [1] and [2]. Later patches teach the JIT, live register analysis and the verifier itself about that convention. They need to answer the same question: does this subprogram return its value in a register pair? Add bpf_ret_reg_pair() up front so it can be used in subsequent patches. It is answered from a per-subprogram flag that bpf_compute_subprog_ret_regs() derives once from the BTF prototype. jit_requested only says that the JIT is enabled, not that it succeeded: bpf_fixup_call_args() falls back to the interpreter when bpf_jit_subprogs() fails with anything other than -EFAULT. So jit_required is still set once the pair is modelled, which turns that fallback into a load failure rather than a silent divergence from what was verified. [1] https://github.com/llvm/llvm-project/pull/190894 [2] https://github.com/llvm/llvm-project/pull/206876 Signed-off-by: Yonghong Song <yonghong.song@linux.dev> Link: https://patch.msgid.link/20260819055249.3295283-1-yonghong.song@linux.dev Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions