Christophe Leroy wrote:
Le 24/11/2022 à 11:13, Naveen N. Rao a écrit :
Christophe Leroy wrote:
ldimm64 is not only used for loading function addresses, and
That's probably true today, but I worry that that can change upstream
and we may not notice at all.
Not sure what you mean.
Today POWERPC considers that ldimm64 is _always_ loading a function
address whereas upstream BPF considers that ldimm64 is a function only
when it is flagged BPF_PSEUDO_FUNC.
Not sure why you think we consider ldimm64 to always be loading a
function address. Perhaps it is due to the poorly chosen variable name
func_addr in bpf_jit_fixup_addresses(), or due to the fact that we
always update the JIT code for ldimm64. In any case, we simply overwrite
imm64 load instructions to ensure we are using the updated address.
In what direction could that change in the future ?
For me if they change that it becomes an API change.
More of an extension, which is exactly what we had when BPF_PSEUDO_FUNC
was introduced. Took us nearly a year before we noticed.
Because we do not do a full JIT during the extra pass today like other
architectures, we are the exception - there is always the risk of bpf
core changes breaking our JIT. So, I still think it is better if we do a
full JIT during extra pass.
- Naveen