From e0843c84d1aa69ed0176cf44109b3bbdd4019504 Mon Sep 17 00:00:00 2001 From: David Monniaux Date: Fri, 27 Mar 2020 20:37:03 +0100 Subject: disable leaf function removal of return address restoration due to memcpy overwriting the return address register --- aarch64/Asmgen.v | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'aarch64/Asmgen.v') diff --git a/aarch64/Asmgen.v b/aarch64/Asmgen.v index f4446696..024c9a17 100644 --- a/aarch64/Asmgen.v +++ b/aarch64/Asmgen.v @@ -1061,9 +1061,12 @@ Definition storeptr (src: ireg) (base: iregsp) (ofs: ptrofs) (k: code) := (** Function epilogue *) Definition make_epilogue (f: Mach.function) (k: code) := - if is_leaf_function f + (* FIXME + Cannot be used because memcpy destroys X30; + issue being discussed with X. Leroy *) + (* if is_leaf_function f then Pfreeframe f.(fn_stacksize) f.(fn_link_ofs) :: k - else loadptr XSP f.(fn_retaddr_ofs) RA + else*) loadptr XSP f.(fn_retaddr_ofs) RA (Pfreeframe f.(fn_stacksize) f.(fn_link_ofs) :: k). (** Translation of a Mach instruction. *) -- cgit