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 c83903bc28d3..970c38388623 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 000000000000..989463fb5d70 --- /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 000000000000..bbbde65d43f6 --- /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 000000000000..92dc84011a9b --- /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 000000000000..3b3d1ad46357 --- /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 000000000000..821a54fe545e --- /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 000000000000..36d637cd1f96 --- /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 000000000000..a83f6c746f74 --- /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 000000000000..4371fd0a8f64 --- /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 000000000000..4a05d0d8a500 --- /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 000000000000..59214222c817 --- /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 000000000000..166f19c01602 --- /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 000000000000..af2933a8ced9 --- /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 000000000000..c8e2d78b57f2 --- /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 000000000000..17f828ecfe92 --- /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 000000000000..98996fdf0324 --- /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 000000000000..d52d6d51cc8d --- /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 000000000000..7c8b796194b2 --- /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 000000000000..c3eba41e095a --- /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 000000000000..6ce02418e696 --- /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 000000000000..ea3f10c4213c --- /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 000000000000..b1e2ec7dc622 --- /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 000000000000..282831f10d96 --- /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 000000000000..5db0d1e09eb7 --- /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 000000000000..5dff8a5443cb --- /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 b60586da8519..59fccc582ca3 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 7042f9c102b9..7afa4f743293 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; + + 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); + var lib_index = try inc_reader.readByte(); - 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) { @@ -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; - }; - const targets = mem.readInt(u32, metadata.inclusions[inc_i..][0..4], .little); - inc_i += 4; - - 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; + break :n sym_name_buf.items; + }; + 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 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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]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
<~5mJ_7`sobhc~{x%AeZ)0+uoMP{iot^?Mq` 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

qj8jSzG6B>IRl=gVhIAJ0bGKUOMtjK)`3 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 literal 274738 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 Lgc4wDeE