Module Name: src Committed By: rin Date: Mon Sep 23 09:48:02 UTC 2024
Modified Files: src/external/gpl3/gcc: README.gcc12 Log Message: README.gcc12: Update sanitizers v.s. sparc While missing 64-bit atomic builtins is fixed, ubsan does not work due to CheckLocked assertion failure. To generate a diff of this commit: cvs rdiff -u -r1.26 -r1.27 src/external/gpl3/gcc/README.gcc12 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/gpl3/gcc/README.gcc12 diff -u src/external/gpl3/gcc/README.gcc12:1.26 src/external/gpl3/gcc/README.gcc12:1.27 --- src/external/gpl3/gcc/README.gcc12:1.26 Mon Sep 23 08:33:53 2024 +++ src/external/gpl3/gcc/README.gcc12 Mon Sep 23 09:48:01 2024 @@ -1,4 +1,4 @@ -$NetBSD: README.gcc12,v 1.26 2024/09/23 08:33:53 rin Exp $ +$NetBSD: README.gcc12,v 1.27 2024/09/23 09:48:01 rin Exp $ new stuff: @@ -61,7 +61,7 @@ powerpc y y y y y y y y y powerpc64 y ? ? y b b ? ? y sh3eb y ? y y b y ? ? ? sh3el y n[20] y y b y n[22] ? ? -sparc y y y y n[21] y y y y +sparc y y y y n[26] y y y y sparc64 y b y y n[16] y y ? y vax y y y y n[23] n n[24,25] ? ? x86_64 y y y y y[13] y y y y @@ -95,16 +95,6 @@ architecture tools kernels libgcc native [20]: kernel needs -O1 for ffs32() and ffs_nodealloccg() for multi-user boot. Even if the whole kernel is built with -O1, it panics during ATF: kernel/t_sysv (92/935): 3 test cases msg: [ 3981.4751382] panic: kernel diagnostic assertion "msghdr->msg_spot >= 0" failed: file "../../../../kern/sysv_msg.c", line 426 -[21]: asan has v7/v8/atomic issues: - ld: /usr/lib/libasan.so: undefined reference to `__sync_val_compare_and_swap_8' - nm shows some more: - U __sync_add_and_fetch_4 - U __sync_fetch_and_add_4 - U __sync_lock_test_and_set_4 - U __sync_val_compare_and_swap_1 - U __sync_val_compare_and_swap_4 - liblsan and libubsan are mssing the _4 and _8 versions, too. - -- they're not really supported (not my atf) in gcc 10 currently. [22]: single-user shell crashes. if userland is built with DBG=-O1, it boots into multi-user mode. however, at least db(3) is broken, by which files are corrupted when edited by vi(1). [23]: sanitizers fail to build: @@ -119,6 +109,13 @@ architecture tools kernels libgcc native during RTL pass: final hello.c: In function 'main': hello.c:9:1: internal compiler error: Segmentation fault +[26]: divide by zero with ubsan hits CheckLocked assertion failure, and stalls at LockSlow indefinitely: + (gdb) bt + #0 __sanitizer::StaticSpinMutex::LockSlow at sanitizer_mutex.cpp:24 + ... + #17 __ubsan::ScopedReport::CheckLocked ubsan_diag.h:255 + #19 0xed9a8f68 in handleDivremOverflowImpl ubsan_diag.h:210 + #20 0xed9aab00 in __ubsan::__ubsan_handle_divrem_overflow ubsan_handlers.cpp:320 CPU vs platform test table (for CPUs with multiple ports). this is "make release" or just kernels.