diff options
author | Radek Bartoň <radek.barton@microsoft.com> | 2025-06-06 14:31:30 +0200 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2025-07-14 18:03:46 +0200 |
commit | f38c75a83ef57140a31b5e1f0d3f65d419ec614e (patch) | |
tree | 2f295ba7f74506f3eaedb66def6dafd9050b0c7d /winsup/cygwin/scripts | |
parent | 8065978ff838f393dfbc7e61374df56f1f157847 (diff) | |
download | newlib-master.zip newlib-master.tar.gz newlib-master.tar.bz2 |
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-x | winsup/cygwin/scripts/gendef | 42 |
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(@) { |