Message ID | 20220509022611.1248063-1-caiyinyu@loongson.cn |
---|---|
Headers |
Return-Path: <libc-alpha-bounces+patchwork=sourceware.org@sourceware.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B98C93838029 for <patchwork@sourceware.org>; Mon, 9 May 2022 02:38:16 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id 4A0C43856DC1 for <libc-alpha@sourceware.org>; Mon, 9 May 2022 02:32:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 4A0C43856DC1 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=loongson.cn Received: from 5.5.5 (unknown [10.2.5.5]) by mail.loongson.cn (Coremail) with SMTP id AQAAf9AxGtnHe3hip3QOAA--.53852S2; Mon, 09 May 2022 10:26:15 +0800 (CST) From: caiyinyu <caiyinyu@loongson.cn> To: libc-alpha@sourceware.org Subject: [PATCH v3 00/13] GLIBC LoongArch PATCHES Date: Mon, 9 May 2022 10:25:58 +0800 Message-Id: <20220509022611.1248063-1-caiyinyu@loongson.cn> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID: AQAAf9AxGtnHe3hip3QOAA--.53852S2 X-Coremail-Antispam: 1UD129KBjvAXoW3Aw4kXF1fCFy5Jr17WF1kAFb_yoW8Wr15Xo WruFWYqr18Zr4ak3WFganxXry7Kr1xAr4UZay3Za4DGF4rCa4UWFyj9an09ry3Zr98Gr45 G34jgrsrtrW7Zrnxn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73VFW2AGmfu7bjvjm3 AaLaJ3UjIYCTnIWjp_UUUYn7AC8VAFwI0_Jr0_Gr1l1xkIjI8I6I8E6xAIw20EY4v20xva j40_Wr0E3s1l1IIY67AEw4v_Jr0_Jr4l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2 x7M28EF7xvwVC0I7IYx2IY67AKxVW5JVW7JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8 JVWxJwA2z4x0Y4vEx4A2jsIE14v26r4UJVWxJr1l84ACjcxK6I8E87Iv6xkF7I0E14v26r 4UJVWxJr1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2Wl Yx0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbV WUJVW8JwACjcxG0xvY0x0EwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lc2xSY4AK6svP MxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr 0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUAVWUtwCIc40Y0x0E wIxGrwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWUJV W8JwCI42IY6xAIw20EY4v20xvaj40_Gr0_Zr1lIxAIcVC2z280aVAFwI0_Jr0_Gr1lIxAI cVC2z280aVCY1x0267AKxVWUJVW8JbIYCTnIWIevJa73UjIFyTuYvjfU5WlkUUUUU X-CM-SenderInfo: 5fdl5xhq1xqz5rrqw2lrqou0/ X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00, KAM_ASCII_DIVIDERS, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list <libc-alpha.sourceware.org> List-Unsubscribe: <https://sourceware.org/mailman/options/libc-alpha>, <mailto:libc-alpha-request@sourceware.org?subject=unsubscribe> List-Archive: <https://sourceware.org/pipermail/libc-alpha/> List-Post: <mailto:libc-alpha@sourceware.org> List-Help: <mailto:libc-alpha-request@sourceware.org?subject=help> List-Subscribe: <https://sourceware.org/mailman/listinfo/libc-alpha>, <mailto:libc-alpha-request@sourceware.org?subject=subscribe> Cc: xuchenghua@loongson.cn, joseph_myers@mentor.com, caiyinyu@loongson.cn Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" <libc-alpha-bounces+patchwork=sourceware.org@sourceware.org> |
Series |
GLIBC LoongArch PATCHES
|
|
Message
caiyinyu
May 9, 2022, 2:25 a.m. UTC
Hello, these are LoongArch patches v4, and we really need your futher suggestions: HISTORY: LoongArch patches v1: https://sourceware.org/pipermail/libc-alpha/2021-August/130262.html LoongArch patches v2: https://sourceware.org/pipermail/libc-alpha/2021-December/134811.html LoongArch patches v3: https://sourceware.org/pipermail/libc-alpha/2022-April/137888.html LoongArch-Doc: https://github.com/loongson/LoongArch-Documentation We add new section: procedure calling convention. https://loongson.github.io/LoongArch-Documentation/LoongArch-ELF-ABI-EN.html#_procedure_calling_convention Source code: linux: https://github.com/loongson/linux/tree/loongarch-next glibc: https://github.com/loongson/glibc/tree/loongarch_2_36_upstream_v4 GCC and Binutils Loongarch parts have been into GNU Open Source community. Loongarch kernal may be no problem on 5.19: https://lore.kernel.org/linux-arch/20220319142759.1026237-1-chenhuacai@loongson.cn/T/#m9d06c1882053c313ced32eaddda61e2514c712e8 --------------------------------------------------------------------------- * Re: [PATCH V8 00/22] arch: Add basic LoongArch support 2022-03-21 21:55 ` Arnd Bergmann @ 2022-03-21 22:03 ` Linus Torvalds 0 siblings, 0 replies; 46+ messages in thread From: Linus Torvalds @ 2022-03-21 22:03 UTC (permalink / raw) To: Arnd Bergmann Cc: Huacai Chen, Andy Lutomirski, Thomas Gleixner, Peter Zijlstra, Andrew Morton, David Airlie, Jonathan Corbet, linux-arch, open list:DOCUMENTATION, Linux Kernel Mailing List, Xuefeng Li, Yanteng Si, Huacai Chen, Jiaxun Yang, Huacai Chen On Mon, Mar 21, 2022 at 2:55 PM Arnd Bergmann <arnd@arndb.de> wrote: > > I can prepare a pull request when it gets to that, but I think the boot protocol > should be fixed first, and that makes it 5.19 material. Thanks. No problem on 5.19, it's not like I don't have enough pending for this merge window already.. Linus --------------------------------------------------------------------------- test result: all passed. XPASS: conform/UNIX98/ndbm.h/linknamespace XPASS: conform/XOPEN2K/ndbm.h/linknamespace XPASS: conform/XOPEN2K8/ndbm.h/linknamespace XPASS: conform/XPG42/ndbm.h/linknamespace UNSUPPORTED: crypt/cert UNSUPPORTED: elf/tst-env-setuid UNSUPPORTED: elf/tst-env-setuid-tunables XPASS: elf/tst-protected1a XPASS: elf/tst-protected1b UNSUPPORTED: elf/tst-valgrind-smoke UNSUPPORTED: misc/tst-adjtimex UNSUPPORTED: misc/tst-clock_adjtime UNSUPPORTED: misc/tst-ntp_adjtime UNSUPPORTED: misc/tst-pkey UNSUPPORTED: misc/tst-rseq UNSUPPORTED: misc/tst-rseq-disable UNSUPPORTED: nptl/test-cond-printers UNSUPPORTED: nptl/test-condattr-printers UNSUPPORTED: nptl/test-mutex-printers UNSUPPORTED: nptl/test-mutexattr-printers UNSUPPORTED: nptl/test-rwlock-printers UNSUPPORTED: nptl/test-rwlockattr-printers UNSUPPORTED: nptl/tst-rseq-nptl UNSUPPORTED: stdlib/tst-secure-getenv UNSUPPORTED: time/tst-clock_settime UNSUPPORTED: time/tst-settimeofday Summary of test results: 4556 PASS 20 UNSUPPORTED 12 XFAIL 6 XPASS caiyinyu (13): LoongArch: Update NEWS and README for the LoongArch port. LoongArch: Add LoongArch entries to config.h.in LoongArch: Add relocations and ELF flags to elf.h and scripts/glibcelf.py LoongArch: ABI Implementation LoongArch: Thread-Local Storage Support LoongArch: Generic <math.h> and soft-fp Routines LoongArch: Atomic and Locking Routines LoongArch: Linux Syscall Interface LoongArch: Linux ABI LoongArch: Add ABI Lists LoongArch: Build Infastructure LoongArch: Hard Float Support LoongArch: Update build-many-glibcs.py for the LoongArch Port. NEWS | 9 + README | 1 + config.h.in | 6 + elf/elf.h | 68 +- manual/math.texi | 2 +- scripts/build-many-glibcs.py | 5 + scripts/glibcelf.py | 3 +- sysdeps/loongarch/Implies | 3 + sysdeps/loongarch/Makefile | 15 + sysdeps/loongarch/__longjmp.S | 52 + sysdeps/loongarch/abort-instr.h | 2 + sysdeps/loongarch/bits/endianness.h | 11 + sysdeps/loongarch/bits/fenv.h | 90 + sysdeps/loongarch/bits/link.h | 58 + sysdeps/loongarch/bits/setjmp.h | 42 + sysdeps/loongarch/bsd-_setjmp.c | 1 + sysdeps/loongarch/bsd-setjmp.c | 1 + sysdeps/loongarch/configure | 5 + sysdeps/loongarch/configure.ac | 6 + sysdeps/loongarch/dl-irel.h | 48 + sysdeps/loongarch/dl-machine.h | 362 +++ sysdeps/loongarch/dl-tls.h | 46 + sysdeps/loongarch/dl-trampoline.S | 91 + sysdeps/loongarch/e_sqrtl.c | 38 + sysdeps/loongarch/fpu/fclrexcpt.c | 46 + sysdeps/loongarch/fpu/fedisblxcpt.c | 39 + sysdeps/loongarch/fpu/feenablxcpt.c | 39 + sysdeps/loongarch/fpu/fegetenv.c | 31 + sysdeps/loongarch/fpu/fegetexcept.c | 32 + sysdeps/loongarch/fpu/fegetmode.c | 27 + sysdeps/loongarch/fpu/fegetround.c | 33 + sysdeps/loongarch/fpu/feholdexcpt.c | 40 + sysdeps/loongarch/fpu/fenv_libc.h | 30 + sysdeps/loongarch/fpu/fesetenv.c | 42 + sysdeps/loongarch/fpu/fesetexcept.c | 32 + sysdeps/loongarch/fpu/fesetmode.c | 38 + sysdeps/loongarch/fpu/fesetround.c | 44 + sysdeps/loongarch/fpu/feupdateenv.c | 43 + sysdeps/loongarch/fpu/fgetexcptflg.c | 38 + sysdeps/loongarch/fpu/fraiseexcpt.c | 75 + sysdeps/loongarch/fpu/fsetexcptflg.c | 41 + sysdeps/loongarch/fpu/ftestexcept.c | 32 + .../loongarch/fpu/math-use-builtins-sqrt.h | 4 + sysdeps/loongarch/fpu_control.h | 102 + sysdeps/loongarch/hp-timing.h | 42 + sysdeps/loongarch/jmpbuf-offsets.h | 22 + sysdeps/loongarch/jmpbuf-unwind.h | 45 + sysdeps/loongarch/ldsodefs.h | 41 + sysdeps/loongarch/libc-tls.c | 32 + sysdeps/loongarch/linkmap.h | 22 + sysdeps/loongarch/lp64/Implies-after | 1 + sysdeps/loongarch/lp64/libm-test-ulps | 1412 +++++++++++ sysdeps/loongarch/lp64/libm-test-ulps-name | 1 + sysdeps/loongarch/machine-gmon.h | 37 + sysdeps/loongarch/math_private.h | 248 ++ sysdeps/loongarch/nptl/Makefile | 21 + sysdeps/loongarch/nptl/pthreaddef.h | 32 + sysdeps/loongarch/nptl/tcb-offsets.sym | 6 + sysdeps/loongarch/nptl/tls.h | 138 ++ sysdeps/loongarch/preconfigure | 47 + sysdeps/loongarch/setjmp.S | 66 + sysdeps/loongarch/sfp-machine.h | 102 + sysdeps/loongarch/sotruss-lib.c | 50 + sysdeps/loongarch/stackinfo.h | 33 + sysdeps/loongarch/start.S | 67 + sysdeps/loongarch/sys/asm.h | 59 + sysdeps/loongarch/sys/regdef.h | 93 + sysdeps/loongarch/tininess.h | 1 + sysdeps/loongarch/tst-audit.h | 23 + sysdeps/unix/sysv/linux/loongarch/Implies | 1 + sysdeps/unix/sysv/linux/loongarch/Makefile | 4 + .../unix/sysv/linux/loongarch/arch-syscall.h | 303 +++ .../sysv/linux/loongarch/atomic-machine.h | 181 ++ .../unix/sysv/linux/loongarch/bits/fcntl.h | 61 + .../unix/sysv/linux/loongarch/bits/procfs.h | 52 + .../linux/loongarch/bits/pthread_stack_min.h | 20 + .../unix/sysv/linux/loongarch/bits/sigstack.h | 32 + sysdeps/unix/sysv/linux/loongarch/clone.S | 96 + sysdeps/unix/sysv/linux/loongarch/clone3.S | 83 + sysdeps/unix/sysv/linux/loongarch/configure | 174 ++ .../unix/sysv/linux/loongarch/configure.ac | 22 + .../unix/sysv/linux/loongarch/getcontext.S | 59 + sysdeps/unix/sysv/linux/loongarch/ldconfig.h | 26 + .../unix/sysv/linux/loongarch/ldd-rewrite.sed | 3 + .../unix/sysv/linux/loongarch/localplt.data | 12 + .../unix/sysv/linux/loongarch/lp64/Implies | 3 + .../sysv/linux/loongarch/lp64/c++-types.data | 67 + .../unix/sysv/linux/loongarch/lp64/ld.abilist | 8 + .../loongarch/lp64/libBrokenLocale.abilist | 1 + .../sysv/linux/loongarch/lp64/libc.abilist | 2139 +++++++++++++++++ .../loongarch/lp64/libc_malloc_debug.abilist | 26 + .../linux/loongarch/lp64/libcrypt.abilist | 2 + .../sysv/linux/loongarch/lp64/libm.abilist | 1031 ++++++++ .../linux/loongarch/lp64/libpthread.abilist | 0 .../linux/loongarch/lp64/libresolv.abilist | 55 + .../sysv/linux/loongarch/lp64/librt.abilist | 0 .../linux/loongarch/lp64/libthread_db.abilist | 40 + .../unix/sysv/linux/loongarch/makecontext.c | 79 + .../unix/sysv/linux/loongarch/setcontext.S | 100 + .../unix/sysv/linux/loongarch/shlib-versions | 7 + .../sysv/linux/loongarch/sigcontextinfo.h | 32 + .../unix/sysv/linux/loongarch/swapcontext.S | 95 + .../unix/sysv/linux/loongarch/sys/ucontext.h | 61 + sysdeps/unix/sysv/linux/loongarch/sys/user.h | 42 + sysdeps/unix/sysv/linux/loongarch/sysdep.S | 53 + sysdeps/unix/sysv/linux/loongarch/sysdep.h | 321 +++ .../sysv/linux/loongarch/ucontext-macros.h | 32 + .../unix/sysv/linux/loongarch/ucontext_i.sym | 31 + sysdeps/unix/sysv/linux/loongarch/vfork.S | 50 + 109 files changed, 9815 insertions(+), 3 deletions(-) create mode 100644 sysdeps/loongarch/Implies create mode 100644 sysdeps/loongarch/Makefile create mode 100644 sysdeps/loongarch/__longjmp.S create mode 100644 sysdeps/loongarch/abort-instr.h create mode 100644 sysdeps/loongarch/bits/endianness.h create mode 100644 sysdeps/loongarch/bits/fenv.h create mode 100644 sysdeps/loongarch/bits/link.h create mode 100644 sysdeps/loongarch/bits/setjmp.h create mode 100644 sysdeps/loongarch/bsd-_setjmp.c create mode 100644 sysdeps/loongarch/bsd-setjmp.c create mode 100644 sysdeps/loongarch/configure create mode 100644 sysdeps/loongarch/configure.ac create mode 100644 sysdeps/loongarch/dl-irel.h create mode 100644 sysdeps/loongarch/dl-machine.h create mode 100644 sysdeps/loongarch/dl-tls.h create mode 100644 sysdeps/loongarch/dl-trampoline.S create mode 100644 sysdeps/loongarch/e_sqrtl.c create mode 100644 sysdeps/loongarch/fpu/fclrexcpt.c create mode 100644 sysdeps/loongarch/fpu/fedisblxcpt.c create mode 100644 sysdeps/loongarch/fpu/feenablxcpt.c create mode 100644 sysdeps/loongarch/fpu/fegetenv.c create mode 100644 sysdeps/loongarch/fpu/fegetexcept.c create mode 100644 sysdeps/loongarch/fpu/fegetmode.c create mode 100644 sysdeps/loongarch/fpu/fegetround.c create mode 100644 sysdeps/loongarch/fpu/feholdexcpt.c create mode 100644 sysdeps/loongarch/fpu/fenv_libc.h create mode 100644 sysdeps/loongarch/fpu/fesetenv.c create mode 100644 sysdeps/loongarch/fpu/fesetexcept.c create mode 100644 sysdeps/loongarch/fpu/fesetmode.c create mode 100644 sysdeps/loongarch/fpu/fesetround.c create mode 100644 sysdeps/loongarch/fpu/feupdateenv.c create mode 100644 sysdeps/loongarch/fpu/fgetexcptflg.c create mode 100644 sysdeps/loongarch/fpu/fraiseexcpt.c create mode 100644 sysdeps/loongarch/fpu/fsetexcptflg.c create mode 100644 sysdeps/loongarch/fpu/ftestexcept.c create mode 100644 sysdeps/loongarch/fpu/math-use-builtins-sqrt.h create mode 100644 sysdeps/loongarch/fpu_control.h create mode 100644 sysdeps/loongarch/hp-timing.h create mode 100644 sysdeps/loongarch/jmpbuf-offsets.h create mode 100644 sysdeps/loongarch/jmpbuf-unwind.h create mode 100644 sysdeps/loongarch/ldsodefs.h create mode 100644 sysdeps/loongarch/libc-tls.c create mode 100644 sysdeps/loongarch/linkmap.h create mode 100644 sysdeps/loongarch/lp64/Implies-after create mode 100644 sysdeps/loongarch/lp64/libm-test-ulps create mode 100644 sysdeps/loongarch/lp64/libm-test-ulps-name create mode 100644 sysdeps/loongarch/machine-gmon.h create mode 100644 sysdeps/loongarch/math_private.h create mode 100644 sysdeps/loongarch/nptl/Makefile create mode 100644 sysdeps/loongarch/nptl/pthreaddef.h create mode 100644 sysdeps/loongarch/nptl/tcb-offsets.sym create mode 100644 sysdeps/loongarch/nptl/tls.h create mode 100644 sysdeps/loongarch/preconfigure create mode 100644 sysdeps/loongarch/setjmp.S create mode 100644 sysdeps/loongarch/sfp-machine.h create mode 100644 sysdeps/loongarch/sotruss-lib.c create mode 100644 sysdeps/loongarch/stackinfo.h create mode 100644 sysdeps/loongarch/start.S create mode 100644 sysdeps/loongarch/sys/asm.h create mode 100644 sysdeps/loongarch/sys/regdef.h create mode 100644 sysdeps/loongarch/tininess.h create mode 100644 sysdeps/loongarch/tst-audit.h create mode 100644 sysdeps/unix/sysv/linux/loongarch/Implies create mode 100644 sysdeps/unix/sysv/linux/loongarch/Makefile create mode 100644 sysdeps/unix/sysv/linux/loongarch/arch-syscall.h create mode 100644 sysdeps/unix/sysv/linux/loongarch/atomic-machine.h create mode 100644 sysdeps/unix/sysv/linux/loongarch/bits/fcntl.h create mode 100644 sysdeps/unix/sysv/linux/loongarch/bits/procfs.h create mode 100644 sysdeps/unix/sysv/linux/loongarch/bits/pthread_stack_min.h create mode 100644 sysdeps/unix/sysv/linux/loongarch/bits/sigstack.h create mode 100644 sysdeps/unix/sysv/linux/loongarch/clone.S create mode 100644 sysdeps/unix/sysv/linux/loongarch/clone3.S create mode 100644 sysdeps/unix/sysv/linux/loongarch/configure create mode 100644 sysdeps/unix/sysv/linux/loongarch/configure.ac create mode 100644 sysdeps/unix/sysv/linux/loongarch/getcontext.S create mode 100644 sysdeps/unix/sysv/linux/loongarch/ldconfig.h create mode 100644 sysdeps/unix/sysv/linux/loongarch/ldd-rewrite.sed create mode 100644 sysdeps/unix/sysv/linux/loongarch/localplt.data create mode 100644 sysdeps/unix/sysv/linux/loongarch/lp64/Implies create mode 100644 sysdeps/unix/sysv/linux/loongarch/lp64/c++-types.data create mode 100644 sysdeps/unix/sysv/linux/loongarch/lp64/ld.abilist create mode 100644 sysdeps/unix/sysv/linux/loongarch/lp64/libBrokenLocale.abilist create mode 100644 sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist create mode 100644 sysdeps/unix/sysv/linux/loongarch/lp64/libc_malloc_debug.abilist create mode 100644 sysdeps/unix/sysv/linux/loongarch/lp64/libcrypt.abilist create mode 100644 sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist create mode 100644 sysdeps/unix/sysv/linux/loongarch/lp64/libpthread.abilist create mode 100644 sysdeps/unix/sysv/linux/loongarch/lp64/libresolv.abilist create mode 100644 sysdeps/unix/sysv/linux/loongarch/lp64/librt.abilist create mode 100644 sysdeps/unix/sysv/linux/loongarch/lp64/libthread_db.abilist create mode 100644 sysdeps/unix/sysv/linux/loongarch/makecontext.c create mode 100644 sysdeps/unix/sysv/linux/loongarch/setcontext.S create mode 100644 sysdeps/unix/sysv/linux/loongarch/shlib-versions create mode 100644 sysdeps/unix/sysv/linux/loongarch/sigcontextinfo.h create mode 100644 sysdeps/unix/sysv/linux/loongarch/swapcontext.S create mode 100644 sysdeps/unix/sysv/linux/loongarch/sys/ucontext.h create mode 100644 sysdeps/unix/sysv/linux/loongarch/sys/user.h create mode 100644 sysdeps/unix/sysv/linux/loongarch/sysdep.S create mode 100644 sysdeps/unix/sysv/linux/loongarch/sysdep.h create mode 100644 sysdeps/unix/sysv/linux/loongarch/ucontext-macros.h create mode 100644 sysdeps/unix/sysv/linux/loongarch/ucontext_i.sym create mode 100644 sysdeps/unix/sysv/linux/loongarch/vfork.S
Comments
> GCC and Binutils Loongarch parts have been into GNU Open Source community. > Loongarch kernal may be no problem on 5.19: It seems that the Linux 5.19 release date could be really close to the glibc 2.36 release date, or even after it. I think we wouldn't want to release with an ABI whose kernel interface is not in a mainline kernel yet. We have the option to backdate ABIs, so we could release the port with a GLIBC_2.36 ABI baseline in glibc 2.37. Or we could merge the port now, and back it out once more if Linux 5.19 does not get released in time. Maybe it's sufficient if the Linux port makes it to mainline during the 5.19 rc phase? Thoughts? Thanks, Florian
On Tue, 10 May 2022, Florian Weimer via Libc-alpha wrote: > Maybe it's sufficient if the Linux port makes it to mainline during the > 5.19 rc phase? I think having the port in Linus's tree, but not yet in a release, ought to be sufficient.
On Tue, May 10, 2022 at 9:37 PM Florian Weimer via Libc-alpha <libc-alpha@sourceware.org> wrote: > > > GCC and Binutils Loongarch parts have been into GNU Open Source community. > > Loongarch kernal may be no problem on 5.19: > > It seems that the Linux 5.19 release date could be really close to the > glibc 2.36 release date, or even after it. I think we wouldn't want to > release with an ABI whose kernel interface is not in a mainline kernel > yet. > > We have the option to backdate ABIs, so we could release the port with a > GLIBC_2.36 ABI baseline in glibc 2.37. > > Or we could merge the port now, and back it out once more if Linux 5.19 > does not get released in time. > > Maybe it's sufficient if the Linux port makes it to mainline during the > 5.19 rc phase? > > Thoughts? From the kernel side, there is only one open question on the ABI: either this will include both clone() and clone3(), or just clone3(). This is a surprisingly hard decision. Normally the policy in the kernel is that new architectures only get the latest syscall interface, dropping earlier syscalls in favor of backward-compatible new interfaces. For clone3(), this may not work out because - clone3 requires knowing the stack frame size for the child, but when emulating clone() in libc, that information may not be there. We need to work around this by allowing clone3 to be called without a size argument - some other architectures still don't implement clone3() since we are missing the assembly bits for it. So unlike the other recently added calls, there is no minimum kernel version that guarantees clone3 to be available. - the seccomp/bfp infrastructure in the kernel cannot currently introspect indirect syscall arguments. This has to be added at some point anyway, but until then the chrome sandbox disallows the clone3 syscall. The easy way out of course is to include both in the kernel, though this feels like taking a step backwards. If libc developers feel strongly either way, please also reply on the kernel thread so we can come to a consensus more quickly. There is still another open discussion that blocks merging the loongarch kernel port, but that is only for the bootloader and not visible to libc. We should merge it as soon as we have concluded both points, but it's unclear if that happens before the merge window. Arnd
On 11/05/2022 03:57, Arnd Bergmann wrote: > On Tue, May 10, 2022 at 9:37 PM Florian Weimer via Libc-alpha > <libc-alpha@sourceware.org> wrote: >> >>> GCC and Binutils Loongarch parts have been into GNU Open Source community. >>> Loongarch kernal may be no problem on 5.19: >> >> It seems that the Linux 5.19 release date could be really close to the >> glibc 2.36 release date, or even after it. I think we wouldn't want to >> release with an ABI whose kernel interface is not in a mainline kernel >> yet. >> >> We have the option to backdate ABIs, so we could release the port with a >> GLIBC_2.36 ABI baseline in glibc 2.37. >> >> Or we could merge the port now, and back it out once more if Linux 5.19 >> does not get released in time. >> >> Maybe it's sufficient if the Linux port makes it to mainline during the >> 5.19 rc phase? >> >> Thoughts? > > From the kernel side, there is only one open question on the ABI: > either this will include both clone() and clone3(), or just clone3(). > > This is a surprisingly hard decision. Normally the policy in the kernel > is that new architectures only get the latest syscall interface, dropping > earlier syscalls in favor of backward-compatible new interfaces. > > For clone3(), this may not work out because > - clone3 requires knowing the stack frame size for the child, but > when emulating clone() in libc, that information may not be there. > We need to work around this by allowing clone3 to be called without > a size argument The clone is used internally without a stack only for fork (sysdeps/unix/sysv/linux/arch-fork.h) and loongarch seems to be using __ASSUME_CLONE_DEFAULT and exporting __NR_clone as a distinct syscall (220). > - some other architectures still don't implement clone3() since we > are missing the assembly bits for it. So unlike the other recently > added calls, there is no minimum kernel version that guarantees clone3 > to be available. If I understood correctly, Intel has added clone3 support on glibc mainly to implement full CET (since it required stack size). As far as I know there is no pressing requirement to use clone3 internally, neither to export as we did for clone; besides to support an new ABI that only defines clone3. > - the seccomp/bfp infrastructure in the kernel cannot currently > introspect indirect syscall arguments. This has to be added at > some point anyway, but until then the chrome sandbox disallows > the clone3 syscall. > > The easy way out of course is to include both in the kernel, though > this feels like taking a step backwards. If libc developers feel strongly > either way, please also reply on the kernel thread so we can come > to a consensus more quickly. I think if kernel allows fork like call for clone3, where if no starting function is set there is no need for stack or stack size; we can adapt internally fork to use __clone_internal (which first try to use clone3 and then fallbacks to clone). Even for x86_64 and i686, clone3 is not used for fork (only for pthread_create and posix_spawn). > > There is still another open discussion that blocks merging the > loongarch kernel port, but that is only for the bootloader and not > visible to libc. We should merge it as soon as we have concluded > both points, but it's unclear if that happens before the merge > window. > > Arnd