From 5af33410f6faa6c0f7d97af5b802b2608b228bc2 Mon Sep 17 00:00:00 2001 From: Tobias Heider Date: Sun, 3 Dec 2023 17:32:20 +0100 Subject: Fix IBT/BTI by instrumenting function calls --- amd64/emit.c | 2 +- arm64/emit.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/amd64/emit.c b/amd64/emit.c index 297cc76..c949589 100644 --- a/amd64/emit.c +++ b/amd64/emit.c @@ -581,7 +581,7 @@ amd64_emitfn(Fn *fn, FILE *f) uint64_t fs; emitfnlnk(fn->name, &fn->lnk, f); - fputs("\tpushq %rbp\n\tmovq %rsp, %rbp\n", f); + fputs("\tendbr64\n\tpushq %rbp\n\tmovq %rsp, %rbp\n", f); fs = framesz(fn); if (fs) fprintf(f, "\tsubq $%"PRIu64", %%rsp\n", fs); diff --git a/arm64/emit.c b/arm64/emit.c index 78a0358..85b5f3d 100644 --- a/arm64/emit.c +++ b/arm64/emit.c @@ -514,6 +514,7 @@ arm64_emitfn(Fn *fn, FILE *out) if (T.apple) e->fn->lnk.align = 4; emitfnlnk(e->fn->name, &e->fn->lnk, e->f); + fputs("\thint\t#34\n", e->f); framelayout(e); if (e->fn->vararg && !T.apple) { -- cgit 1.4.1