Make improvements

- Let OpenMP be usable via cosmocc
- Let libunwind be usable via cosmocc
- Make X86_HAVE(AVXVNNI) work correctly
- Avoid using MAP_GROWSDOWN on qemu-aarch64
- Introduce in6addr_any and in6addr_loopback
- Have thread stacks use MAP_GROWSDOWN by default
- Ask OpenMP to not use filesystem to manage threads
- Make NI_MAXHOST and NI_MAXSERV available w/o _GNU_SOURCE
This commit is contained in:
Justine Tunney 2024-01-29 15:45:10 -08:00
parent 5f8e9f14c1
commit 369aebfc48
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
36 changed files with 416 additions and 80 deletions

View file

@ -11,6 +11,14 @@
////===----------------------------------------------------------------------===//
//
#ifdef __COSMOPOLITAN__
.macro no.comm name:req size:req align:req
.globl \name
\name: .align \align
.byte \size
.endm
#endif
// -----------------------------------------------------------------------
// macros
// -----------------------------------------------------------------------
@ -180,11 +188,11 @@ KMP_PREFIX_UNDERSCORE(\proc):
.macro COMMON name, size, align_power
#if KMP_OS_DARWIN
.comm \name, \size
no.comm \name, \size
#elif KMP_OS_WINDOWS
.comm \name, \size, \align_power
no.comm \name, \size, \align_power
#else // !KMP_OS_DARWIN && !KMP_OS_WINDOWS
.comm \name, \size, (1<<(\align_power))
no.comm \name, \size, (1<<(\align_power))
#endif
.endm
@ -202,14 +210,14 @@ KMP_PREFIX_UNDERSCORE(\proc):
# if KMP_ARCH_X86
# if KMP_OS_DARWIN
.data
.comm .gomp_critical_user_,32
no.comm .gomp_critical_user_,32
.data
.globl ___kmp_unnamed_critical_addr
___kmp_unnamed_critical_addr:
.long .gomp_critical_user_
# else /* Linux* OS */
.data
.comm .gomp_critical_user_,32,8
no.comm .gomp_critical_user_,32,8
.data
ALIGN 4
.global __kmp_unnamed_critical_addr
@ -223,21 +231,14 @@ __kmp_unnamed_critical_addr:
# if KMP_ARCH_X86_64
# if KMP_OS_DARWIN
.data
.comm .gomp_critical_user_,32
no.comm .gomp_critical_user_,32
.data
.globl ___kmp_unnamed_critical_addr
___kmp_unnamed_critical_addr:
.quad .gomp_critical_user_
# else /* Linux* OS */
.data
#ifdef __COSMOPOLITAN__
.globl .gomp_critical_user_
".gomp_critical_user_":
.align 8
.byte 32
#else
.comm .gomp_critical_user_,32,8
#endif
no.comm .gomp_critical_user_,32,8
.data
ALIGN 8
.global __kmp_unnamed_critical_addr