Due to xonly on arm64 it is no longer possible to read the testfly routine.
authoranton <anton@openbsd.org>
Sun, 8 Jan 2023 06:56:01 +0000 (06:56 +0000)
committeranton <anton@openbsd.org>
Sun, 8 Jan 2023 06:56:01 +0000 (06:56 +0000)
Put it in the rodata section allowing it to be copied. Note that testfly is
never executed directly but only after placing it in a separate chunk of memory
allowing its permissions to be mutated.

regress/sys/kern/noexec/testfly.S

index 4e78c8d..dc40440 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: testfly.S,v 1.10 2021/06/20 16:48:50 deraadt Exp $    */
+/*     $OpenBSD: testfly.S,v 1.11 2023/01/08 06:56:01 anton Exp $      */
 
 /*
  * Copyright (c) 2002,2003 Michael Shalayeff
 
        .space 16384
 
-#if defined(__aarch64__) || defined(__amd64__) || defined(__i386__)
+#if defined(__aarch64__)
+       .section .rodata
+       .globl  testfly
+       .type   testfly,#function
+testfly:
+       ret
+END(testfly)
+#endif
+
+#if defined(__amd64__) || defined(__i386__)
 ENTRY(testfly)
        ret
 END(testfly)