On Tue, May 05, 2026 at 05:48:32PM +0200, Christophe Leroy (CS GROUP) wrote:
> bclr (which is the return INSN_RETURN) has type 19 > > By the way you can have a look at > https://patchwork.ozlabs.org/project/linuxppc-dev/patch/bfa8364da047d8610a09458a1cd924a0566aedbb.1736955567.git.christophe.le...@csgroup.eu/ That is indeed more; isn't bcl something like COND_CALL ? (another one of them things we don't have). > That patch has all the objtool decoding. By the way objtool is missing a > INSN_CONDITIONAL_RETURN, also see > https://patchwork.ozlabs.org/project/linuxppc-dev/patch/537e5d8f181b1f1c2b8918f1aefa1dba3f972c03.1736955567.git.christophe.le...@csgroup.eu/ Right, that is not something x86 has, but I don't see a reason we can't add that. With return thunks, Clang (and I've heard GCC is also considering this) does something very close to conditional return. With return thunks, regular RET instruction is replaced with a JMP, or rather Jcc in this specific case, to the out of line __x86_return_thunk symbol. Objtool currently treats that as a conditional sibling/tail call, which isn't wrong. Anyway, with that patch, I think validate_insn() wants something like so added: case INSN_COND_RETURN: validate_return(func, insn, statep); break; That way we do the return checks, but don't terminate the control flow. After all, when the condition is taken, we had better have the stack frame in the same state etc.
