From f03142cfe983e81c9c298e3cbb76228e9a32f1ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Mon, 23 Sep 2024 14:14:15 +0200 Subject: [PATCH 1/5] process_headers: Add loongarch64-linux-gnusf. --- tools/process_headers.zig | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/process_headers.zig b/tools/process_headers.zig index c83903bc28..970c383886 100644 --- a/tools/process_headers.zig +++ b/tools/process_headers.zig @@ -209,6 +209,11 @@ const glibc_targets = [_]LibCTarget{ .arch = MultiArch{ .specific = .loongarch64 }, .abi = MultiAbi{ .specific = Abi.gnu }, }, + LibCTarget{ + .name = "loongarch64-linux-gnu-lp64s", + .arch = MultiArch{ .specific = .loongarch64 }, + .abi = MultiAbi{ .specific = Abi.gnusf }, + }, }; const musl_targets = [_]LibCTarget{ From 6635d02143fa7eded22192e9e4bbd1f94df11330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Mon, 23 Sep 2024 19:08:05 +0200 Subject: [PATCH 2/5] glibc: Add loongarch64-linux-gnusf headers. --- .../loongarch64-linux-gnusf/bits/endianness.h | 11 ++ .../loongarch64-linux-gnusf/bits/fcntl.h | 61 +++++++ .../loongarch64-linux-gnusf/bits/fenv.h | 90 ++++++++++ .../loongarch64-linux-gnusf/bits/hwcap.h | 38 ++++ .../loongarch64-linux-gnusf/bits/link.h | 76 ++++++++ .../bits/link_lavcurrent.h | 25 +++ .../bits/long-double.h | 21 +++ .../loongarch64-linux-gnusf/bits/procfs.h | 52 ++++++ .../bits/pthread_stack_min.h | 20 +++ .../loongarch64-linux-gnusf/bits/setjmp.h | 42 +++++ .../loongarch64-linux-gnusf/bits/shmlba.h | 24 +++ .../loongarch64-linux-gnusf/bits/sigstack.h | 32 ++++ .../bits/struct_stat.h | 127 +++++++++++++ .../loongarch64-linux-gnusf/bits/timesize.h | 20 +++ .../loongarch64-linux-gnusf/bits/wordsize.h | 19 ++ .../loongarch64-linux-gnusf/fpu_control.h | 119 ++++++++++++ .../gnu/lib-names-lp64s.h | 27 +++ .../loongarch64-linux-gnusf/gnu/lib-names.h | 16 ++ .../loongarch64-linux-gnusf/gnu/stubs-lp64s.h | 38 ++++ .../loongarch64-linux-gnusf/gnu/stubs.h | 12 ++ .../include/loongarch64-linux-gnusf/ieee754.h | 170 ++++++++++++++++++ .../include/loongarch64-linux-gnusf/sys/asm.h | 78 ++++++++ .../loongarch64-linux-gnusf/sys/ucontext.h | 64 +++++++ .../loongarch64-linux-gnusf/sys/user.h | 42 +++++ 24 files changed, 1224 insertions(+) create mode 100644 lib/libc/include/loongarch64-linux-gnusf/bits/endianness.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/bits/fcntl.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/bits/fenv.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/bits/hwcap.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/bits/link.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/bits/link_lavcurrent.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/bits/long-double.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/bits/procfs.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/bits/pthread_stack_min.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/bits/setjmp.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/bits/shmlba.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/bits/sigstack.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/bits/struct_stat.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/bits/timesize.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/bits/wordsize.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/fpu_control.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/gnu/lib-names-lp64s.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/gnu/lib-names.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/gnu/stubs-lp64s.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/gnu/stubs.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/ieee754.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/sys/asm.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/sys/ucontext.h create mode 100644 lib/libc/include/loongarch64-linux-gnusf/sys/user.h diff --git a/lib/libc/include/loongarch64-linux-gnusf/bits/endianness.h b/lib/libc/include/loongarch64-linux-gnusf/bits/endianness.h new file mode 100644 index 0000000000..989463fb5d --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/bits/endianness.h @@ -0,0 +1,11 @@ +#ifndef _BITS_ENDIANNESS_H +#define _BITS_ENDIANNESS_H 1 + +#ifndef _BITS_ENDIAN_H +#error "Never use directly; include instead." +#endif + +/* LoongArch is little-endian. */ +#define __BYTE_ORDER __LITTLE_ENDIAN + +#endif /* bits/endianness.h */ \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/bits/fcntl.h b/lib/libc/include/loongarch64-linux-gnusf/bits/fcntl.h new file mode 100644 index 0000000000..bbbde65d43 --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/bits/fcntl.h @@ -0,0 +1,61 @@ +/* O_*, F_*, FD_* bit values for the generic Linux/LoongArch ABI. + Copyright (C) 2022-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _FCNTL_H +#error "Never use directly; include instead." +#endif + +#include + +/* In 64-bit ISA files are always with 64bit off_t and F_*LK64 are the same as + non-64-bit versions. It will need to be revised for 128-bit. */ +#if __WORDSIZE == 64 +#define __O_LARGEFILE 0 + +#define F_GETLK64 5 /* Get record locking info. */ +#define F_SETLK64 6 /* Set record locking info (non-blocking). */ +#define F_SETLKW64 7 /* Set record locking info (blocking). */ +#endif + +struct flock +{ + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ +#ifndef __USE_FILE_OFFSET64 + __off_t l_start; /* Offset where the lock begins. */ + __off_t l_len; /* Size of the locked area; zero means until EOF. */ +#else + __off64_t l_start; /* Offset where the lock begins. */ + __off64_t l_len; /* Size of the locked area; zero means until EOF. */ +#endif + __pid_t l_pid; /* Process holding the lock. */ +}; + +#ifdef __USE_LARGEFILE64 +struct flock64 +{ + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ + __off64_t l_start; /* Offset where the lock begins. */ + __off64_t l_len; /* Size of the locked area; zero means until EOF. */ + __pid_t l_pid; /* Process holding the lock. */ +}; +#endif + +/* Include generic Linux declarations. */ +#include \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/bits/fenv.h b/lib/libc/include/loongarch64-linux-gnusf/bits/fenv.h new file mode 100644 index 0000000000..92dc84011a --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/bits/fenv.h @@ -0,0 +1,90 @@ +/* Floating point environment. + Copyright (C) 2022-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _FENV_H +#error "Never use directly; include instead." +#endif + +/* Define bits representing the exception. We use the bit positions + of the appropriate bits in the FPU control word. */ +enum +{ + FE_INEXACT = +#define FE_INEXACT 0x010000 + FE_INEXACT, + FE_UNDERFLOW = +#define FE_UNDERFLOW 0x020000 + FE_UNDERFLOW, + FE_OVERFLOW = +#define FE_OVERFLOW 0x040000 + FE_OVERFLOW, + FE_DIVBYZERO = +#define FE_DIVBYZERO 0x080000 + FE_DIVBYZERO, + FE_INVALID = +#define FE_INVALID 0x100000 + FE_INVALID, +}; + +#define FE_ALL_EXCEPT \ + (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID) + +/* The LoongArch FPU supports all of the four defined rounding modes. We + use again the bit positions in the FPU control word as the values + for the appropriate macros. */ +enum +{ + FE_TONEAREST = +#define FE_TONEAREST 0x000 + FE_TONEAREST, + FE_TOWARDZERO = +#define FE_TOWARDZERO 0x100 + FE_TOWARDZERO, + FE_UPWARD = +#define FE_UPWARD 0x200 + FE_UPWARD, + FE_DOWNWARD = +#define FE_DOWNWARD 0x300 + FE_DOWNWARD +}; + +/* Type representing exception flags. */ +typedef unsigned int fexcept_t; + +/* Type representing floating-point environment. This function corresponds + to the layout of the block written by the `fstenv'. */ +typedef struct +{ + unsigned int __fp_control_register; +} fenv_t; + +/* If the default argument is used we use this value. */ +#define FE_DFL_ENV ((const fenv_t *) -1) + +#ifdef __USE_GNU +/* Floating-point environment where none of the exception is masked. */ +#define FE_NOMASK_ENV ((const fenv_t *) -257) +#endif + +#if __GLIBC_USE (IEC_60559_BFP_EXT_C23) +/* Type representing floating-point control modes. */ +typedef unsigned int femode_t; + +/* Default floating-point control modes. */ +#define FE_DFL_MODE ((const femode_t *) -1L) +#endif \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/bits/hwcap.h b/lib/libc/include/loongarch64-linux-gnusf/bits/hwcap.h new file mode 100644 index 0000000000..3b3d1ad463 --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/bits/hwcap.h @@ -0,0 +1,38 @@ +/* Defines for bits in AT_HWCAP. LoongArch64 Linux version. + Copyright (C) 2022-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#if !defined (_SYS_AUXV_H) +# error "Never include directly; use instead." +#endif + +/* The following must match the kernel's . */ +/* HWCAP flags */ +#define HWCAP_LOONGARCH_CPUCFG (1 << 0) +#define HWCAP_LOONGARCH_LAM (1 << 1) +#define HWCAP_LOONGARCH_UAL (1 << 2) +#define HWCAP_LOONGARCH_FPU (1 << 3) +#define HWCAP_LOONGARCH_LSX (1 << 4) +#define HWCAP_LOONGARCH_LASX (1 << 5) +#define HWCAP_LOONGARCH_CRC32 (1 << 6) +#define HWCAP_LOONGARCH_COMPLEX (1 << 7) +#define HWCAP_LOONGARCH_CRYPTO (1 << 8) +#define HWCAP_LOONGARCH_LVZ (1 << 9) +#define HWCAP_LOONGARCH_LBT_X86 (1 << 10) +#define HWCAP_LOONGARCH_LBT_ARM (1 << 11) +#define HWCAP_LOONGARCH_LBT_MIPS (1 << 12) +#define HWCAP_LOONGARCH_PTW (1 << 13) \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/bits/link.h b/lib/libc/include/loongarch64-linux-gnusf/bits/link.h new file mode 100644 index 0000000000..821a54fe54 --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/bits/link.h @@ -0,0 +1,76 @@ +/* Machine-specific declarations for dynamic linker interface. + Copyright (C) 2022-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _LINK_H +#error "Never include directly; use instead." +#endif + +#ifndef __loongarch_soft_float +typedef float La_loongarch_vr + __attribute__ ((__vector_size__ (16), __aligned__ (16))); +typedef float La_loongarch_xr + __attribute__ ((__vector_size__ (32), __aligned__ (16))); + +typedef union +{ + double fpreg[4]; + La_loongarch_vr vr[2]; + La_loongarch_xr xr[1]; +} La_loongarch_vector __attribute__ ((__aligned__ (16))); +#endif + +typedef struct La_loongarch_regs +{ + unsigned long int lr_reg[8]; /* a0 - a7 */ +#ifndef __loongarch_soft_float + La_loongarch_vector lr_vec[8]; /* fa0 - fa7 or vr0 - vr7 or xr0 - xr7*/ +#endif + unsigned long int lr_ra; + unsigned long int lr_sp; +} La_loongarch_regs; + +/* Return values for calls from PLT on LoongArch. */ +typedef struct La_loongarch_retval +{ + unsigned long int lrv_a0; + unsigned long int lrv_a1; +#ifndef __loongarch_soft_float + La_loongarch_vector lrv_vec0; + La_loongarch_vector lrv_vec1; +#endif +} La_loongarch_retval; + +__BEGIN_DECLS + +extern ElfW (Addr) la_loongarch_gnu_pltenter (ElfW (Sym) *__sym, + unsigned int __ndx, + uintptr_t *__refcook, + uintptr_t *__defcook, + La_loongarch_regs *__regs, + unsigned int *__flags, + const char *__symname, + long int *__framesizep); +extern unsigned int la_loongarch_gnu_pltexit (ElfW (Sym) *__sym, + unsigned int __ndx, + uintptr_t *__refcook, + uintptr_t *__defcook, + const La_loongarch_regs *__inregs, + La_loongarch_retval *__outregs, + const char *__symname); + +__END_DECLS \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/bits/link_lavcurrent.h b/lib/libc/include/loongarch64-linux-gnusf/bits/link_lavcurrent.h new file mode 100644 index 0000000000..36d637cd1f --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/bits/link_lavcurrent.h @@ -0,0 +1,25 @@ +/* Data structure for communication from the run-time dynamic linker for + loaded ELF shared objects. LAV_CURRENT definition. + Copyright (C) 2023-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _LINK_H +# error "Never include directly; use instead." +#endif + +/* Version numbers for la_version handshake interface. */ +#define LAV_CURRENT 3 \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/bits/long-double.h b/lib/libc/include/loongarch64-linux-gnusf/bits/long-double.h new file mode 100644 index 0000000000..a83f6c746f --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/bits/long-double.h @@ -0,0 +1,21 @@ +/* Properties of long double type. ldbl-128 version. + Copyright (C) 2016-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* long double is distinct from double, so there is nothing to + define here. */ +#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0 \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/bits/procfs.h b/lib/libc/include/loongarch64-linux-gnusf/bits/procfs.h new file mode 100644 index 0000000000..4371fd0a8f --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/bits/procfs.h @@ -0,0 +1,52 @@ +/* Types for registers for sys/procfs.h. + Copyright (C) 2022-2024 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SYS_PROCFS_H +# error "Never include directly; use instead." +#endif + +/* Type for a general-purpose register. */ +typedef __uint64_t elf_greg_t; + +/* And the whole bunch of them. We could have used `struct + pt_regs' directly in the typedef, but tradition says that + the register set is an array, which does have some peculiar + semantics, so leave it that way. */ +#define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof (elf_greg_t)) +typedef elf_greg_t elf_gregset_t[ELF_NGREG]; + +#define ELF_NFPREG 34 /* 32 FPRs + 8-byte byte-vec for fcc + 4-byte FCR */ +typedef union +{ + double d; + float f; +} elf_fpreg_t; +typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; + +typedef union +{ + double d[2]; + float f[4]; +} __attribute__ ((__aligned__ (16))) elf_lsxregset_t[32]; + +typedef union +{ + double d[4]; + float f[8]; +} __attribute__ ((__aligned__ (32))) elf_lasxregset_t[32]; \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/bits/pthread_stack_min.h b/lib/libc/include/loongarch64-linux-gnusf/bits/pthread_stack_min.h new file mode 100644 index 0000000000..4a05d0d8a5 --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/bits/pthread_stack_min.h @@ -0,0 +1,20 @@ +/* Definition of PTHREAD_STACK_MIN. LoongArch Linux version. + Copyright (C) 2022-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* Minimum size for a thread. At least two pages with 64k pages. */ +#define PTHREAD_STACK_MIN 131072 \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/bits/setjmp.h b/lib/libc/include/loongarch64-linux-gnusf/bits/setjmp.h new file mode 100644 index 0000000000..59214222c8 --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/bits/setjmp.h @@ -0,0 +1,42 @@ +/* Define the machine-dependent type `jmp_buf'. + Copyright (C) 2022-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _LOONGARCH_BITS_SETJMP_H +#define _LOONGARCH_BITS_SETJMP_H + +typedef struct __jmp_buf_internal_tag +{ + /* Program counter. */ + long int __pc; + /* Stack pointer. */ + long int __sp; + /* Reserved */ + long int __x; + /* Frame pointer. */ + long int __fp; + /* Callee-saved registers. */ + long int __regs[9]; + +#ifndef __loongarch_soft_float + /* Callee-saved floating point registers. */ + double __fpregs[8]; +#endif + +} __jmp_buf[1]; + +#endif /* _LOONGARCH_BITS_SETJMP_H */ \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/bits/shmlba.h b/lib/libc/include/loongarch64-linux-gnusf/bits/shmlba.h new file mode 100644 index 0000000000..166f19c016 --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/bits/shmlba.h @@ -0,0 +1,24 @@ +/* Define SHMLBA. LoongArch version. + Copyright (C) 2023-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _SYS_SHM_H +# error "Never use directly; include instead." +#endif + +/* Segment low boundary address multiple. */ +#define SHMLBA 0x10000 \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/bits/sigstack.h b/lib/libc/include/loongarch64-linux-gnusf/bits/sigstack.h new file mode 100644 index 0000000000..af2933a8ce --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/bits/sigstack.h @@ -0,0 +1,32 @@ +/* sigstack, sigaltstack definitions. + Copyright (C) 2022-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _BITS_SIGSTACK_H +#define _BITS_SIGSTACK_H 1 + +#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H +# error "Never include this file directly. Use instead" +#endif + +/* Minimum stack size for a signal handler. */ +#define MINSIGSTKSZ 4096 + +/* System default stack size. */ +#define SIGSTKSZ 16384 + +#endif /* bits/sigstack.h */ \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/bits/struct_stat.h b/lib/libc/include/loongarch64-linux-gnusf/bits/struct_stat.h new file mode 100644 index 0000000000..c8e2d78b57 --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/bits/struct_stat.h @@ -0,0 +1,127 @@ +/* Definition for struct stat. + Copyright (C) 2020-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#if !defined _SYS_STAT_H && !defined _FCNTL_H +# error "Never include directly; use instead." +#endif + +#ifndef _BITS_STRUCT_STAT_H +#define _BITS_STRUCT_STAT_H 1 + +#include +#include + +#if defined __USE_FILE_OFFSET64 +# define __field64(type, type64, name) type64 name +#elif __WORDSIZE == 64 || defined __INO_T_MATCHES_INO64_T +# if defined __INO_T_MATCHES_INO64_T && !defined __OFF_T_MATCHES_OFF64_T +# error "ino_t and off_t must both be the same type" +# endif +# define __field64(type, type64, name) type name +#elif __BYTE_ORDER == __LITTLE_ENDIAN +# define __field64(type, type64, name) \ + type name __attribute__((__aligned__ (__alignof__ (type64)))); int __##name##_pad +#else +# define __field64(type, type64, name) \ + int __##name##_pad __attribute__((__aligned__ (__alignof__ (type64)))); type name +#endif + +struct stat + { + __dev_t st_dev; /* Device. */ + __field64(__ino_t, __ino64_t, st_ino); /* File serial number. */ + __mode_t st_mode; /* File mode. */ + __nlink_t st_nlink; /* Link count. */ + __uid_t st_uid; /* User ID of the file's owner. */ + __gid_t st_gid; /* Group ID of the file's group.*/ + __dev_t st_rdev; /* Device number, if device. */ + __dev_t __pad1; + __field64(__off_t, __off64_t, st_size); /* Size of file, in bytes. */ + __blksize_t st_blksize; /* Optimal block size for I/O. */ + int __pad2; + __field64(__blkcnt_t, __blkcnt64_t, st_blocks); /* 512-byte blocks */ +#ifdef __USE_XOPEN2K8 + /* Nanosecond resolution timestamps are stored in a format + equivalent to 'struct timespec'. This is the type used + whenever possible but the Unix namespace rules do not allow the + identifier 'timespec' to appear in the header. + Therefore we have to handle the use of this header in strictly + standard-compliant sources special. */ + struct timespec st_atim; /* Time of last access. */ + struct timespec st_mtim; /* Time of last modification. */ + struct timespec st_ctim; /* Time of last status change. */ +# define st_atime st_atim.tv_sec /* Backward compatibility. */ +# define st_mtime st_mtim.tv_sec +# define st_ctime st_ctim.tv_sec +#else + __time_t st_atime; /* Time of last access. */ + unsigned long int st_atimensec; /* Nscecs of last access. */ + __time_t st_mtime; /* Time of last modification. */ + unsigned long int st_mtimensec; /* Nsecs of last modification. */ + __time_t st_ctime; /* Time of last status change. */ + unsigned long int st_ctimensec; /* Nsecs of last status change. */ +#endif + int __glibc_reserved[2]; + }; + +#undef __field64 + +#ifdef __USE_LARGEFILE64 +struct stat64 + { + __dev_t st_dev; /* Device. */ + __ino64_t st_ino; /* File serial number. */ + __mode_t st_mode; /* File mode. */ + __nlink_t st_nlink; /* Link count. */ + __uid_t st_uid; /* User ID of the file's owner. */ + __gid_t st_gid; /* Group ID of the file's group.*/ + __dev_t st_rdev; /* Device number, if device. */ + __dev_t __pad1; + __off64_t st_size; /* Size of file, in bytes. */ + __blksize_t st_blksize; /* Optimal block size for I/O. */ + int __pad2; + __blkcnt64_t st_blocks; /* Nr. 512-byte blocks allocated. */ +#ifdef __USE_XOPEN2K8 + /* Nanosecond resolution timestamps are stored in a format + equivalent to 'struct timespec'. This is the type used + whenever possible but the Unix namespace rules do not allow the + identifier 'timespec' to appear in the header. + Therefore we have to handle the use of this header in strictly + standard-compliant sources special. */ + struct timespec st_atim; /* Time of last access. */ + struct timespec st_mtim; /* Time of last modification. */ + struct timespec st_ctim; /* Time of last status change. */ +#else + __time_t st_atime; /* Time of last access. */ + unsigned long int st_atimensec; /* Nscecs of last access. */ + __time_t st_mtime; /* Time of last modification. */ + unsigned long int st_mtimensec; /* Nsecs of last modification. */ + __time_t st_ctime; /* Time of last status change. */ + unsigned long int st_ctimensec; /* Nsecs of last status change. */ +#endif + int __glibc_reserved[2]; + }; +#endif + +/* Tell code we have these members. */ +#define _STATBUF_ST_BLKSIZE +#define _STATBUF_ST_RDEV +/* Nanosecond resolution time values are supported. */ +#define _STATBUF_ST_NSEC + +#endif /* _BITS_STRUCT_STAT_H */ \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/bits/timesize.h b/lib/libc/include/loongarch64-linux-gnusf/bits/timesize.h new file mode 100644 index 0000000000..17f828ecfe --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/bits/timesize.h @@ -0,0 +1,20 @@ +/* Bit size of the time_t type at glibc build time, general case. + Copyright (C) 2018-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* Size in bits of the 'time_t' type of the default ABI. */ +#define __TIMESIZE 64 \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/bits/wordsize.h b/lib/libc/include/loongarch64-linux-gnusf/bits/wordsize.h new file mode 100644 index 0000000000..98996fdf03 --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/bits/wordsize.h @@ -0,0 +1,19 @@ +/* Copyright (C) 1999-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define __WORDSIZE 64 +#define __WORDSIZE_TIME64_COMPAT32 0 \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/fpu_control.h b/lib/libc/include/loongarch64-linux-gnusf/fpu_control.h new file mode 100644 index 0000000000..d52d6d51cc --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/fpu_control.h @@ -0,0 +1,119 @@ +/* FPU control word bits. + Copyright (C) 2022-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _FPU_CONTROL_H +#define _FPU_CONTROL_H + +/* LoongArch FPU floating point control register bits. + * + * 31-29 -> reserved (read as 0, can not changed by software) + * 28 -> cause bit for invalid exception + * 27 -> cause bit for division by zero exception + * 26 -> cause bit for overflow exception + * 25 -> cause bit for underflow exception + * 24 -> cause bit for inexact exception + * 23-21 -> reserved (read as 0, can not changed by software) + * 20 -> flag invalid exception + * 19 -> flag division by zero exception + * 18 -> flag overflow exception + * 17 -> flag underflow exception + * 16 -> flag inexact exception + * 9-8 -> rounding control + * 7-5 -> reserved (read as 0, can not changed by software) + * 4 -> enable exception for invalid exception + * 3 -> enable exception for division by zero exception + * 2 -> enable exception for overflow exception + * 1 -> enable exception for underflow exception + * 0 -> enable exception for inexact exception + * + * + * Rounding Control: + * 00 - rounding ties to even (RNE) + * 01 - rounding toward zero (RZ) + * 10 - rounding (up) toward plus infinity (RP) + * 11 - rounding (down) toward minus infinity (RM) + */ + +#include + +#ifdef __loongarch_soft_float + +#define _FPU_RESERVED 0xffffffff +#define _FPU_DEFAULT 0x00000000 +typedef unsigned int fpu_control_t; +#define _FPU_GETCW(cw) (cw) = 0 +#define _FPU_SETCW(cw) (void) (cw) +extern fpu_control_t __fpu_control; + +#else /* __loongarch_soft_float */ + +/* Masks for interrupts. */ +#define _FPU_MASK_V 0x10 /* Invalid operation */ +#define _FPU_MASK_Z 0x08 /* Division by zero */ +#define _FPU_MASK_O 0x04 /* Overflow */ +#define _FPU_MASK_U 0x02 /* Underflow */ +#define _FPU_MASK_I 0x01 /* Inexact operation */ + +/* Flush denormalized numbers to zero. */ +#define _FPU_FLUSH_TZ 0x1000000 + +/* Rounding control. */ +#define _FPU_RC_NEAREST 0x000 /* RECOMMENDED */ +#define _FPU_RC_ZERO 0x100 +#define _FPU_RC_UP 0x200 +#define _FPU_RC_DOWN 0x300 +/* Mask for rounding control. */ +#define _FPU_RC_MASK 0x300 + +#define _FPU_RESERVED 0x0 + +#define _FPU_DEFAULT 0x0 +#define _FPU_IEEE 0x1F + +/* Type of the control word. */ +typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__))); + +/* Macros for accessing the hardware control word. */ +extern fpu_control_t __loongarch_fpu_getcw (void) __THROW; +extern void __loongarch_fpu_setcw (fpu_control_t) __THROW; +#define _FPU_GETCW(cw) __asm__ volatile ("movfcsr2gr %0,$fcsr0" : "=r"(cw)) +#define _FPU_SETCW(cw) __asm__ volatile ("movgr2fcsr $fcsr0,%0" : : "r"(cw)) + +/* Default control word set at startup. */ +extern fpu_control_t __fpu_control; + +# define _FCLASS_SNAN (1 << 0) +# define _FCLASS_QNAN (1 << 1) +# define _FCLASS_MINF (1 << 2) +# define _FCLASS_MNORM (1 << 3) +# define _FCLASS_MSUBNORM (1 << 4) +# define _FCLASS_MZERO (1 << 5) +# define _FCLASS_PINF (1 << 6) +# define _FCLASS_PNORM (1 << 7) +# define _FCLASS_PSUBNORM (1 << 8) +# define _FCLASS_PZERO (1 << 9) + +# define _FCLASS_ZERO (_FCLASS_MZERO | _FCLASS_PZERO) +# define _FCLASS_SUBNORM (_FCLASS_MSUBNORM | _FCLASS_PSUBNORM) +# define _FCLASS_NORM (_FCLASS_MNORM | _FCLASS_PNORM) +# define _FCLASS_INF (_FCLASS_MINF | _FCLASS_PINF) +# define _FCLASS_NAN (_FCLASS_SNAN | _FCLASS_QNAN) + +#endif /* __loongarch_soft_float */ + +#endif /* fpu_control.h */ \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/gnu/lib-names-lp64s.h b/lib/libc/include/loongarch64-linux-gnusf/gnu/lib-names-lp64s.h new file mode 100644 index 0000000000..7c8b796194 --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/gnu/lib-names-lp64s.h @@ -0,0 +1,27 @@ +/* This file is automatically generated. */ +#ifndef __GNU_LIB_NAMES_H +# error "Never use directly; include instead." +#endif + +#define LD_LINUX_LOONGARCH_LP64S_SO "ld-linux-loongarch-lp64s.so.1" +#define LD_SO "ld-linux-loongarch-lp64s.so.1" +#define LIBANL_SO "libanl.so.1" +#define LIBBROKENLOCALE_SO "libBrokenLocale.so.1" +#define LIBC_MALLOC_DEBUG_SO "libc_malloc_debug.so.0" +#define LIBC_SO "libc.so.6" +#define LIBDL_SO "libdl.so.2" +#define LIBGCC_S_SO "libgcc_s.so.1" +#define LIBMVEC_SO "libmvec.so.1" +#define LIBM_SO "libm.so.6" +#define LIBNSL_SO "libnsl.so.1" +#define LIBNSS_COMPAT_SO "libnss_compat.so.2" +#define LIBNSS_DB_SO "libnss_db.so.2" +#define LIBNSS_DNS_SO "libnss_dns.so.2" +#define LIBNSS_FILES_SO "libnss_files.so.2" +#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2" +#define LIBNSS_LDAP_SO "libnss_ldap.so.2" +#define LIBPTHREAD_SO "libpthread.so.0" +#define LIBRESOLV_SO "libresolv.so.2" +#define LIBRT_SO "librt.so.1" +#define LIBTHREAD_DB_SO "libthread_db.so.1" +#define LIBUTIL_SO "libutil.so.1" \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/gnu/lib-names.h b/lib/libc/include/loongarch64-linux-gnusf/gnu/lib-names.h new file mode 100644 index 0000000000..c3eba41e09 --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/gnu/lib-names.h @@ -0,0 +1,16 @@ +/* This file is automatically generated. + It defines macros to allow user program to find the shared + library files which come as part of GNU libc. */ +#ifndef __GNU_LIB_NAMES_H +#define __GNU_LIB_NAMES_H 1 + +#include + +#if __WORDSIZE == 64 && defined __loongarch_soft_float +# include +#endif +#if __WORDSIZE == 64 && defined __loongarch_double_float +# include +#endif + +#endif /* gnu/lib-names.h */ \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/gnu/stubs-lp64s.h b/lib/libc/include/loongarch64-linux-gnusf/gnu/stubs-lp64s.h new file mode 100644 index 0000000000..6ce02418e6 --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/gnu/stubs-lp64s.h @@ -0,0 +1,38 @@ +/* This file is automatically generated. + It defines a symbol `__stub_FUNCTION' for each function + in the C library which is a stub, meaning it will fail + every time called, usually setting errno to ENOSYS. */ + +#ifdef _LIBC + #error Applications may not define the macro _LIBC +#endif + +#define __stub___compat_bdflush +#define __stub___compat_create_module +#define __stub___compat_get_kernel_syms +#define __stub___compat_query_module +#define __stub___compat_uselib +#define __stub_chflags +#define __stub_fchflags +#define __stub_feclearexcept +#define __stub_fedisableexcept +#define __stub_feenableexcept +#define __stub_fegetenv +#define __stub_fegetexcept +#define __stub_fegetexceptflag +#define __stub_fegetmode +#define __stub_fegetround +#define __stub_feholdexcept +#define __stub_feraiseexcept +#define __stub_fesetenv +#define __stub_fesetexcept +#define __stub_fesetexceptflag +#define __stub_fesetmode +#define __stub_fesetround +#define __stub_fetestexcept +#define __stub_feupdateenv +#define __stub_gtty +#define __stub_revoke +#define __stub_setlogin +#define __stub_sigreturn +#define __stub_stty \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/gnu/stubs.h b/lib/libc/include/loongarch64-linux-gnusf/gnu/stubs.h new file mode 100644 index 0000000000..ea3f10c421 --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/gnu/stubs.h @@ -0,0 +1,12 @@ +/* This file is automatically generated. + This file selects the right generated file of `__stub_FUNCTION' macros + based on the architecture being compiled for. */ + +#include + +#if __WORDSIZE == 64 && defined __loongarch_soft_float +# include +#endif +#if __WORDSIZE == 64 && defined __loongarch_double_float +# include +#endif \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/ieee754.h b/lib/libc/include/loongarch64-linux-gnusf/ieee754.h new file mode 100644 index 0000000000..b1e2ec7dc6 --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/ieee754.h @@ -0,0 +1,170 @@ +/* Copyright (C) 1992-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _IEEE754_H +#define _IEEE754_H 1 + +#include + +#include + +__BEGIN_DECLS + +union ieee754_float + { + float f; + + /* This is the IEEE 754 single-precision format. */ + struct + { +#if __BYTE_ORDER == __BIG_ENDIAN + unsigned int negative:1; + unsigned int exponent:8; + unsigned int mantissa:23; +#endif /* Big endian. */ +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned int mantissa:23; + unsigned int exponent:8; + unsigned int negative:1; +#endif /* Little endian. */ + } ieee; + + /* This format makes it easier to see if a NaN is a signalling NaN. */ + struct + { +#if __BYTE_ORDER == __BIG_ENDIAN + unsigned int negative:1; + unsigned int exponent:8; + unsigned int quiet_nan:1; + unsigned int mantissa:22; +#endif /* Big endian. */ +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned int mantissa:22; + unsigned int quiet_nan:1; + unsigned int exponent:8; + unsigned int negative:1; +#endif /* Little endian. */ + } ieee_nan; + }; + +#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */ + + +union ieee754_double + { + double d; + + /* This is the IEEE 754 double-precision format. */ + struct + { +#if __BYTE_ORDER == __BIG_ENDIAN + unsigned int negative:1; + unsigned int exponent:11; + /* Together these comprise the mantissa. */ + unsigned int mantissa0:20; + unsigned int mantissa1:32; +#endif /* Big endian. */ +#if __BYTE_ORDER == __LITTLE_ENDIAN + /* Together these comprise the mantissa. */ + unsigned int mantissa1:32; + unsigned int mantissa0:20; + unsigned int exponent:11; + unsigned int negative:1; +#endif /* Little endian. */ + } ieee; + + /* This format makes it easier to see if a NaN is a signalling NaN. */ + struct + { +#if __BYTE_ORDER == __BIG_ENDIAN + unsigned int negative:1; + unsigned int exponent:11; + unsigned int quiet_nan:1; + /* Together these comprise the mantissa. */ + unsigned int mantissa0:19; + unsigned int mantissa1:32; +#else + /* Together these comprise the mantissa. */ + unsigned int mantissa1:32; + unsigned int mantissa0:19; + unsigned int quiet_nan:1; + unsigned int exponent:11; + unsigned int negative:1; +#endif + } ieee_nan; + }; + +#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */ + + +union ieee854_long_double + { + long double d; + + /* This is the IEEE 854 quad-precision format. */ + struct + { +#if __BYTE_ORDER == __BIG_ENDIAN + unsigned int negative:1; + unsigned int exponent:15; + /* Together these comprise the mantissa. */ + unsigned int mantissa0:16; + unsigned int mantissa1:32; + unsigned int mantissa2:32; + unsigned int mantissa3:32; +#endif /* Big endian. */ +#if __BYTE_ORDER == __LITTLE_ENDIAN + /* Together these comprise the mantissa. */ + unsigned int mantissa3:32; + unsigned int mantissa2:32; + unsigned int mantissa1:32; + unsigned int mantissa0:16; + unsigned int exponent:15; + unsigned int negative:1; +#endif /* Little endian. */ + } ieee; + + /* This format makes it easier to see if a NaN is a signalling NaN. */ + struct + { +#if __BYTE_ORDER == __BIG_ENDIAN + unsigned int negative:1; + unsigned int exponent:15; + unsigned int quiet_nan:1; + /* Together these comprise the mantissa. */ + unsigned int mantissa0:15; + unsigned int mantissa1:32; + unsigned int mantissa2:32; + unsigned int mantissa3:32; +#else + /* Together these comprise the mantissa. */ + unsigned int mantissa3:32; + unsigned int mantissa2:32; + unsigned int mantissa1:32; + unsigned int mantissa0:15; + unsigned int quiet_nan:1; + unsigned int exponent:15; + unsigned int negative:1; +#endif + } ieee_nan; + }; + +#define IEEE854_LONG_DOUBLE_BIAS 0x3fff /* Added to exponent. */ + +__END_DECLS + +#endif /* ieee754.h */ \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/sys/asm.h b/lib/libc/include/loongarch64-linux-gnusf/sys/asm.h new file mode 100644 index 0000000000..282831f10d --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/sys/asm.h @@ -0,0 +1,78 @@ +/* Miscellaneous macros. + Copyright (C) 2022-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SYS_ASM_H +#define _SYS_ASM_H + +#include +#include + +/* Macros to handle different pointer/register sizes for 32/64-bit code. */ +#define SZREG 8 +#define SZFREG 8 +#define SZVREG 16 +#define SZXREG 32 +#define REG_L ld.d +#define REG_S st.d +#define SRLI srli.d +#define SLLI slli.d +#define ADDI addi.d +#define ADD add.d +#define SUB sub.d +#define BSTRINS bstrins.d +#define LI li.d +#define FREG_L fld.d +#define FREG_S fst.d + +/* Declare leaf routine. + The usage of macro LEAF/ENTRY is as follows: + 1. LEAF(fcn) -- the align value of fcn is .align 3 (default value) + 2. LEAF(fcn, 6) -- the align value of fcn is .align 6 +*/ +#define LEAF_IMPL(symbol, aln, ...) \ + .text; \ + .globl symbol; \ + .align aln; \ + .type symbol, @function; \ +symbol: \ + cfi_startproc; + + +#define LEAF(...) LEAF_IMPL(__VA_ARGS__, 3) +#define ENTRY(...) LEAF(__VA_ARGS__) + +#define LEAF_NO_ALIGN(symbol) \ + .text; \ + .globl symbol; \ + .type symbol, @function; \ +symbol: \ + cfi_startproc; + +#define ENTRY_NO_ALIGN(symbol) LEAF_NO_ALIGN(symbol) + + +/* Mark end of function. */ +#undef END +#define END(function) \ + cfi_endproc; \ + .size function, .- function; + +/* Stack alignment. */ +#define ALMASK ~15 + +#endif /* sys/asm.h */ \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/sys/ucontext.h b/lib/libc/include/loongarch64-linux-gnusf/sys/ucontext.h new file mode 100644 index 0000000000..5db0d1e09e --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/sys/ucontext.h @@ -0,0 +1,64 @@ +/* struct ucontext definition. + Copyright (C) 2022-2024 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* Don't rely on this, the interface is currently messed up and may need to + be broken to be fixed. */ +#ifndef _SYS_UCONTEXT_H +#define _SYS_UCONTEXT_H 1 + +#include + +#include +#include + +#ifdef __USE_MISC +#define LARCH_NGREG 32 + +#define LARCH_REG_RA 1 +#define LARCH_REG_SP 3 +#define LARCH_REG_S0 23 +#define LARCH_REG_S1 24 +#define LARCH_REG_A0 4 +#define LARCH_REG_S2 25 +#define LARCH_REG_NARGS 8 + +typedef unsigned long int greg_t; +/* Container for all general registers. */ +typedef greg_t gregset_t[32]; +#endif + +typedef struct mcontext_t +{ + unsigned long long __pc; + unsigned long long __gregs[32]; + unsigned int __flags; + unsigned long long __extcontext[0] __attribute__((__aligned__(16))); +} mcontext_t; + +/* Userlevel context. */ +typedef struct ucontext_t +{ + unsigned long int __uc_flags; + struct ucontext_t *uc_link; + stack_t uc_stack; + sigset_t uc_sigmask; + mcontext_t uc_mcontext; +} ucontext_t; + +#endif /* sys/ucontext.h */ \ No newline at end of file diff --git a/lib/libc/include/loongarch64-linux-gnusf/sys/user.h b/lib/libc/include/loongarch64-linux-gnusf/sys/user.h new file mode 100644 index 0000000000..5dff8a5443 --- /dev/null +++ b/lib/libc/include/loongarch64-linux-gnusf/sys/user.h @@ -0,0 +1,42 @@ +/* struct user_regs_struct definition for LoongArch. + Copyright (C) 2022-2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _SYS_USER_H +#define _SYS_USER_H 1 + +#include + +struct user_regs_struct +{ + /* Saved main processor registers. */ + uint64_t regs[32]; + + /* Saved special registers. */ + uint64_t orig_a0; + uint64_t csr_era; + uint64_t csr_badv; + uint64_t reserved[10]; +}; + +struct user_fp_struct { + uint64_t fpr[32]; + uint64_t fcc; + uint32_t fcsr; +}; + +#endif /* _SYS_USER_H */ \ No newline at end of file From c38dd72ca7b45dfdb0d05f27c9a20846f1b54c00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Mon, 23 Sep 2024 14:14:38 +0200 Subject: [PATCH 3/5] std.zig.target: Add loongarch64-linux-gnusf. --- lib/std/zig/target.zig | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/std/zig/target.zig b/lib/std/zig/target.zig index b60586da85..59fccc582c 100644 --- a/lib/std/zig/target.zig +++ b/lib/std/zig/target.zig @@ -35,6 +35,7 @@ pub const available_libcs = [_]ArchOsAbi{ .{ .arch = .x86, .os = .linux, .abi = .musl }, .{ .arch = .x86, .os = .windows, .abi = .gnu }, .{ .arch = .loongarch64, .os = .linux, .abi = .gnu, .glibc_min = .{ .major = 2, .minor = 36, .patch = 0 } }, + .{ .arch = .loongarch64, .os = .linux, .abi = .gnusf, .glibc_min = .{ .major = 2, .minor = 36, .patch = 0 } }, .{ .arch = .loongarch64, .os = .linux, .abi = .musl }, .{ .arch = .m68k, .os = .linux, .abi = .gnu }, .{ .arch = .m68k, .os = .linux, .abi = .musl }, From 0be22b1e4196dd93cb652f861a1c9e5e3f5c4d5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Mon, 23 Sep 2024 15:21:51 +0200 Subject: [PATCH 4/5] glibc: Update abilists parsing to the new format version. --- src/glibc.zig | 74 +++++++++++++++++++++++++-------------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/src/glibc.zig b/src/glibc.zig index 7042f9c102..7afa4f7432 100644 --- a/src/glibc.zig +++ b/src/glibc.zig @@ -845,12 +845,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) !voi stubs_asm.shrinkRetainingCapacity(0); try stubs_asm.appendSlice(".text\n"); - var inc_i: usize = 0; - - const fn_inclusions_len = mem.readInt(u16, metadata.inclusions[inc_i..][0..2], .little); - inc_i += 2; - var sym_i: usize = 0; + var sym_name_buf = std.ArrayList(u8).init(arena); var opt_symbol_name: ?[]const u8 = null; var versions_buffer: [32]u8 = undefined; var versions_len: usize = undefined; @@ -871,32 +867,38 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) !voi // twice, which causes a "duplicate symbol" assembler error. var versions_written = std.AutoArrayHashMap(Version, void).init(arena); + var inc_fbs = std.io.fixedBufferStream(metadata.inclusions); + var inc_reader = inc_fbs.reader(); + + const fn_inclusions_len = try inc_reader.readInt(u16, .little); + while (sym_i < fn_inclusions_len) : (sym_i += 1) { const sym_name = opt_symbol_name orelse n: { - const name = mem.sliceTo(metadata.inclusions[inc_i..], 0); - inc_i += name.len + 1; + sym_name_buf.clearRetainingCapacity(); + try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); - opt_symbol_name = name; + opt_symbol_name = sym_name_buf.items; versions_buffer = undefined; versions_len = 0; - break :n name; - }; - const targets = mem.readInt(u32, metadata.inclusions[inc_i..][0..4], .little); - inc_i += 4; - const lib_index = metadata.inclusions[inc_i]; - inc_i += 1; - const is_terminal = (targets & (1 << 31)) != 0; - if (is_terminal) opt_symbol_name = null; + break :n sym_name_buf.items; + }; + const targets = try std.leb.readUleb128(u64, inc_reader); + var lib_index = try inc_reader.readByte(); + + const is_terminal = (lib_index & (1 << 7)) != 0; + if (is_terminal) { + lib_index &= ~@as(u8, 1 << 7); + opt_symbol_name = null; + } // Test whether the inclusion applies to our current library and target. const ok_lib_and_target = (lib_index == lib_i) and - ((targets & (@as(u32, 1) << @as(u5, @intCast(target_targ_index)))) != 0); + ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); while (true) { - const byte = metadata.inclusions[inc_i]; - inc_i += 1; + const byte = try inc_reader.readByte(); const last = (byte & 0b1000_0000) != 0; const ver_i = @as(u7, @truncate(byte)); if (ok_lib_and_target and ver_i <= target_ver_index) { @@ -1027,8 +1029,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) !voi , .{wordDirective(target)}); } - const obj_inclusions_len = mem.readInt(u16, metadata.inclusions[inc_i..][0..2], .little); - inc_i += 2; + const obj_inclusions_len = try inc_reader.readInt(u16, .little); sym_i = 0; opt_symbol_name = null; @@ -1036,33 +1037,32 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) !voi versions_len = undefined; while (sym_i < obj_inclusions_len) : (sym_i += 1) { const sym_name = opt_symbol_name orelse n: { - const name = mem.sliceTo(metadata.inclusions[inc_i..], 0); - inc_i += name.len + 1; + sym_name_buf.clearRetainingCapacity(); + try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); - opt_symbol_name = name; + opt_symbol_name = sym_name_buf.items; versions_buffer = undefined; versions_len = 0; - break :n name; + + break :n sym_name_buf.items; }; - const targets = mem.readInt(u32, metadata.inclusions[inc_i..][0..4], .little); - inc_i += 4; + const targets = try std.leb.readUleb128(u64, inc_reader); + const size = try std.leb.readUleb128(u16, inc_reader); + var lib_index = try inc_reader.readByte(); - const size = mem.readInt(u16, metadata.inclusions[inc_i..][0..2], .little); - inc_i += 2; - - const lib_index = metadata.inclusions[inc_i]; - inc_i += 1; - const is_terminal = (targets & (1 << 31)) != 0; - if (is_terminal) opt_symbol_name = null; + const is_terminal = (lib_index & (1 << 7)) != 0; + if (is_terminal) { + lib_index &= ~@as(u8, 1 << 7); + opt_symbol_name = null; + } // Test whether the inclusion applies to our current library and target. const ok_lib_and_target = (lib_index == lib_i) and - ((targets & (@as(u32, 1) << @as(u5, @intCast(target_targ_index)))) != 0); + ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); while (true) { - const byte = metadata.inclusions[inc_i]; - inc_i += 1; + const byte = try inc_reader.readByte(); const last = (byte & 0b1000_0000) != 0; const ver_i = @as(u7, @truncate(byte)); if (ok_lib_and_target and ver_i <= target_ver_index) { From 4cc1b060ebd76a9fc5ffda8cc83ad48dc11855d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Mon, 23 Sep 2024 14:17:11 +0200 Subject: [PATCH 5/5] glibc: Update abilists file for loongarch64-linux-gnusf support. Also a 269 KB -> 240 KB size reduction due to the new format version. --- lib/libc/glibc/abilists | Bin 274738 -> 246035 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/lib/libc/glibc/abilists b/lib/libc/glibc/abilists index 4e617973270d8c6fd227a4d35865cd7aa9a4bc07..3aed1e0f930ed2e4e9f6d558c1a42a9ec24eff14 100644 GIT binary patch literal 246035 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%0A6(#1TLe?|F%A5vJ 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 I8jkJ~0G|D6jsO4v literal 274738 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 ppkuT8jR&3En3@Wj?7%(A0RWljLJa@_