[newlib-cygwin/main] Cygwin: gendef: stub implementations of routines for AArch64
Corinna Vinschen
corinna@sourceware.org
Mon Jul 14 16:05:16 GMT 2025
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=f38c75a83ef57140a31b5e1f0d3f65d419ec614e
commit f38c75a83ef57140a31b5e1f0d3f65d419ec614e
Author: Radek Bartoň <radek.barton@microsoft.com>
AuthorDate: Fri Jun 6 14:31:30 2025 +0200
Commit: Corinna Vinschen <corinna@vinschen.de>
CommitDate: Mon Jul 14 18:03:46 2025 +0200
Cygwin: gendef: stub implementations of routines for AArch64
This patch aspires to provide only minimal changes to
`winsup/cygwin/scripts/gendef` allowing to pass the AArch64 build. It does not
provide any implementations of the generated routines.
Signed-off-by: Radek Bartoň <radek.barton@microsoft.com>
Diff:
---
winsup/cygwin/scripts/gendef | 42 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 41 insertions(+), 1 deletion(-)
diff --git a/winsup/cygwin/scripts/gendef b/winsup/cygwin/scripts/gendef
index 861a2405b2ff..d60d45431480 100755
--- a/winsup/cygwin/scripts/gendef
+++ b/winsup/cygwin/scripts/gendef
@@ -21,6 +21,7 @@ if (!defined($cpu) || !defined($output_def)) {
die "$0: missing required option\n";
}
+my $is_aarch64 = $cpu eq 'aarch64';
my $is_x86_64 = $cpu eq 'x86_64';
# FIXME? Do other (non-32 bit) arches on Windows still use symbol prefixes?
my $sym_prefix = '';
@@ -89,7 +90,7 @@ sub fefunc {
my $func = $sym_prefix . shift;
my $fe = $sym_prefix . shift;
my $sigfe_func;
- if ($is_x86_64) {
+ if ($is_x86_64 || $is_aarch64) {
$sigfe_func = ($fe =~ /^(.*)_${func}$/)[0];
}
my $extra;
@@ -109,6 +110,15 @@ $fe:
EOF
}
+ # TODO: This is only a stub, it needs to be implemented properly for AArch64.
+ if ($is_aarch64) {
+ $res = <<EOF;
+ .extern $func
+ .global $fe
+$fe:
+EOF
+ }
+
if (!$main::first++) {
if ($is_x86_64) {
$res = <<EOF . longjmp () . $res;
@@ -338,6 +348,23 @@ stabilize_sig_stack:
popq %r12
ret
.seh_endproc
+EOF
+ }
+ # TODO: These are only stubs, they need to be implemented properly for AArch64.
+ if ($is_aarch64) {
+ $res = <<EOF . longjmp () . $res;
+ .include "tlsoffsets"
+ .text
+
+_sigfe_maybe:
+ .global _sigbe
+_sigfe:
+_sigbe:
+ .global sigdelayed
+sigdelayed:
+_sigdelayed_end:
+ .global _sigdelayed_end
+stabilize_sig_stack:
EOF
}
}
@@ -474,6 +501,19 @@ longjmp:
incl %eax
0: ret
.seh_endproc
+EOF
+ }
+ if ($is_aarch64) {
+ # TODO: These are only stubs, they need to be implemented properly for AArch64.
+ return <<EOF;
+ .globl sigsetjmp
+sigsetjmp:
+ .globl setjmp
+setjmp:
+ .globl siglongjmp
+siglongjmp:
+ .globl longjmp
+longjmp:
EOF
}
}
More information about the Cygwin-cvs
mailing list