aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin/scripts
diff options
context:
space:
mode:
authorRadek Bartoň <radek.barton@microsoft.com>2025-06-06 14:31:30 +0200
committerCorinna Vinschen <corinna@vinschen.de>2025-07-14 18:03:46 +0200
commitf38c75a83ef57140a31b5e1f0d3f65d419ec614e (patch)
tree2f295ba7f74506f3eaedb66def6dafd9050b0c7d /winsup/cygwin/scripts
parent8065978ff838f393dfbc7e61374df56f1f157847 (diff)
downloadnewlib-master.zip
newlib-master.tar.gz
newlib-master.tar.bz2
Cygwin: gendef: stub implementations of routines for AArch64HEADmastermain
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>
Diffstat (limited to 'winsup/cygwin/scripts')
-rwxr-xr-xwinsup/cygwin/scripts/gendef42
1 files changed, 41 insertions, 1 deletions
diff --git a/winsup/cygwin/scripts/gendef b/winsup/cygwin/scripts/gendef
index 861a240..d60d454 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;
@@ -340,6 +350,23 @@ stabilize_sig_stack:
.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
+ }
}
return $res;
}
@@ -476,6 +503,19 @@ longjmp:
.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
+ }
}
sub cleanup(@) {