Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251208174940.949856-1-bill.roberts@arm.com>
Date: Mon,  8 Dec 2025 11:44:43 -0600
From: Bill Roberts <bill.roberts@....com>
To: musl@...ts.openwall.com
Cc: Bill Roberts <bill.roberts@....com>
Subject: [RFC 00/14] aarch64: Convert to inline asm

Based on previous discussions on enabling PAC and BTI for Aarch64
targets, rather than annotating the existing assembler, use inline
assembly and mix of C. Now this has the benefits of:
1. Handling PAC, BTI and GCS.
   a. prologue and eplilog insertion as needed.
   b. Adding GNU notes as needed.
2. Adding in the CFI statements as needed.

I'd love to get feedback, thanks!

Bill Roberts (14):
  aarch64: drop crt(i|n).s since NO_LEGACY_INITFINI
  aarch64: rewrite fenv routines in C using inline asm
  aarch64: rewrite vfork routine in C using inline asm
  aarch64: rewrite clone routine in C using inline asm
  aarch64: rewrite __syscall_cp_asm in C using inline asm
  aarch64: rewrite __unmapself in C using inline asm
  aarch64: rewrite tlsdesc reoutines in C using inline asm
  aarch64: rewrite __restore_rt routines in C using inline asm
  aarch64: rewrite longjmp routines in C using inline asm
  aarch64: rewrite setjmp routines in C using inline asm
  aarch64: rewrite sigsetjmp routines in C using inline asm
  aarch64: rewrite dlsym routine in C using inline asm
  aarch64: rewrite memcpy routine in C using inline asm
  aarch64: rewrite memset routine in C using inline asm

 arch/aarch64/crt_arch.h          |  29 ++---
 crt/aarch64/crti.s               |  15 ---
 crt/aarch64/crtn.s               |   7 --
 src/fenv/aarch64/fenv.c          |  96 ++++++++++++++++
 src/fenv/aarch64/fenv.s          |  68 -----------
 src/ldso/aarch64/dlsym.c         |  11 ++
 src/ldso/aarch64/dlsym.s         |   6 -
 src/ldso/aarch64/tlsdesc.c       |  50 +++++++++
 src/ldso/aarch64/tlsdesc.s       |  31 ------
 src/process/aarch64/vfork.c      |  21 ++++
 src/process/aarch64/vfork.s      |   9 --
 src/setjmp/aarch64/longjmp.c     |  39 +++++++
 src/setjmp/aarch64/longjmp.s     |  23 ----
 src/setjmp/aarch64/setjmp.c      |  34 ++++++
 src/setjmp/aarch64/setjmp.s      |  24 ----
 src/signal/aarch64/restore.c     |  15 +++
 src/signal/aarch64/restore.s     |  10 --
 src/signal/aarch64/sigsetjmp.c   |  43 +++++++
 src/signal/aarch64/sigsetjmp.s   |  21 ----
 src/string/aarch64/memcpy.S      | 186 -------------------------------
 src/string/aarch64/memcpy.c      | 168 ++++++++++++++++++++++++++++
 src/string/aarch64/memset.S      | 115 -------------------
 src/string/aarch64/memset.c      | 122 ++++++++++++++++++++
 src/thread/aarch64/__unmapself.c |  16 +++
 src/thread/aarch64/__unmapself.s |   7 --
 src/thread/aarch64/clone.c       |  44 ++++++++
 src/thread/aarch64/clone.s       |  31 ------
 src/thread/aarch64/syscall_cp.c  |  61 ++++++++++
 src/thread/aarch64/syscall_cp.s  |  32 ------
 29 files changed, 736 insertions(+), 598 deletions(-)
 delete mode 100644 crt/aarch64/crti.s
 delete mode 100644 crt/aarch64/crtn.s
 create mode 100644 src/fenv/aarch64/fenv.c
 delete mode 100644 src/fenv/aarch64/fenv.s
 create mode 100644 src/ldso/aarch64/dlsym.c
 delete mode 100644 src/ldso/aarch64/dlsym.s
 create mode 100644 src/ldso/aarch64/tlsdesc.c
 delete mode 100644 src/ldso/aarch64/tlsdesc.s
 create mode 100644 src/process/aarch64/vfork.c
 delete mode 100644 src/process/aarch64/vfork.s
 create mode 100644 src/setjmp/aarch64/longjmp.c
 delete mode 100644 src/setjmp/aarch64/longjmp.s
 create mode 100644 src/setjmp/aarch64/setjmp.c
 delete mode 100644 src/setjmp/aarch64/setjmp.s
 create mode 100644 src/signal/aarch64/restore.c
 delete mode 100644 src/signal/aarch64/restore.s
 create mode 100644 src/signal/aarch64/sigsetjmp.c
 delete mode 100644 src/signal/aarch64/sigsetjmp.s
 delete mode 100644 src/string/aarch64/memcpy.S
 create mode 100644 src/string/aarch64/memcpy.c
 delete mode 100644 src/string/aarch64/memset.S
 create mode 100644 src/string/aarch64/memset.c
 create mode 100644 src/thread/aarch64/__unmapself.c
 delete mode 100644 src/thread/aarch64/__unmapself.s
 create mode 100644 src/thread/aarch64/clone.c
 delete mode 100644 src/thread/aarch64/clone.s
 create mode 100644 src/thread/aarch64/syscall_cp.c
 delete mode 100644 src/thread/aarch64/syscall_cp.s

-- 
2.51.0

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.