1 $NetBSD: README.gcc12,v 1.2 2025/09/07 04:08:23 mrg Exp $ 2 3 4 new stuff: 5 libmpx 6 liboffloadmic 7 libvtv 8 libcet 9 libphobos 10 d 11 gfortran 12 libbacktrace: +dwarf5_CFLAGS = $(libbacktrace_TEST_CFLAGS) -gdwarf-5 13 c++tools 14 15 todo: 16 - audit all uses of new warning-disable variables and 17 convert some from -Wno- to -Wno-error= 18 19 arch/feature list. 20 21 tools: does build.sh tools work? 22 kernels: does a kernel run? y (yes), b (builds/ready), p (partially), ? (not ready) 23 libgcc: does libgcc build? 24 native-gcc: does a full mknative-gcc complete? 25 sani: has sanitizer been ported to this CPU again for GCC 12? b (build) y (works) 26 make release: does build.sh release complete? (before sanitizer - bs) 27 runs: does the system boot with a full world? 28 atf: does atf run / compare well 29 switched: has port switched? y (yes), n (no/ready), ? (not ready) 30 31 32 architecture tools kernels libgcc native-gcc/sani make release runs atf switched 33 ------------ ----- ------- ------ --------------- ------------ ---- --- -------- 34 aarch64 y y y y y[17] y y y y 35 aarch64eb y y y y y[17] y y y y 36 alpha y y y y b y y y y 37 earmv4 y b ? y ? ? ? ? y 38 earmv4eb y b ? y ? ? ? ? y 39 earmv5 y y y y b y y y y 40 earmv5eb y y y y b y y y y 41 earmv5hf y b ? y ? ? ? ? y 42 earmv5hfeb y b ? y ? ? ? ? y 43 earmv6 y b ? y ? ? ? ? y 44 earmv6eb y b ? y ? ? ? ? y 45 earmv6hf y y y y b y y y y 46 earmv6hfeb y y y y b y y y y 47 earmv7 y b y y ? ? ? ? y 48 earmv7eb y b ? y ? ? ? ? y 49 earmv7hf y y y y b y y y y 50 earmv7hfeb y y y y b y y y y 51 hppa y y y y ? y y y y 52 i386 y y y y y y y y y 53 ia64 y b y y y y y[3] n y 54 m68000 y y y y b n y[14] ? y 55 m68k y y y y b y y[14] y[14] y 56 mipseb y b y y b y y y y 57 mipsel y b y y b y y ? y 58 mips64eb y b y y b y y y y 59 mips64el y b y y b y y ? y 60 powerpc y y y y y y y y y 61 powerpc64 y ? ? y b b ? ? y 62 sh3eb y ? y y b y ? ? y 63 sh3el y y y y b y y y y 64 sparc y y y y n[26] y y y y 65 sparc64 y b y y n[16] y y ? y 66 vax y y y y n[23] n n[24,25] ? ? 67 x86_64 y y y y y[13] y y y y 68 riscv32 y y y y b y n[2] ? y 69 riscv64 y y y y b y y y y 70 ------------ ----- ------- ------ --------------- ------------ ---- --- 71 architecture tools kernels libgcc native-gcc/sani make release runs atf 72 73 [2]: riscv32 kernels are not really implemented yet, not GCC 12 issue. 74 [3]: GENERIC.SKI boots just as well as GCC 10. 75 [13]: on amd64, with very basic test, lsan, ubsan, and asan work, but tsan crashes at start up: 76 ThreadSanitizer: CHECK failed: tsan_rtl.cpp:149 "((reinterpret_cast<uptr>(this) % 64)) == ((0))" (0x10, 0x0) (tid=21499) 77 ThreadSanitizer:DEADLYSIGNAL 78 ==21499==ERROR: ThreadSanitizer: SEGV on unknown address 0x000000000017 (pc 0x7f7ff4e5e14e bp 0x7f7fffffdbd0 sp 0x7f7fffffdb40 T21499) 79 ==21499==The signal is caused by a READ memory access. 80 ==21499==Hint: address points to the zero page. 81 ThreadSanitizer:DEADLYSIGNAL 82 ThreadSanitizer: nested bug in the same thread, aborting. 83 [14]: "dd count=1", "env LC_CTYPE=en_US.UTF-8 locale", and "tests/crypto/libcrypto/h_evp_test evpmd_blake.txt" abort. 84 adding -fno-stack-protector to strsuftoll.c, citrus_module.c, and blake2_prov.c, respectively, works around the problem. 85 -- workarounds commited. 86 [16]: sanitizers crash early: 87 Program received signal SIGSEGV, Segmentation fault. 88 (gdb) bt 89 #0 0x000000004064265c in __sanitizer::CheckASLR () at /usr/src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cpp:2181 90 #1 0xffffffffffffc704 in ?? () 91 Backtrace stopped: previous frame identical to this frame (corrupt stack?) 92 -- some wip patches make this less bad 93 [17]: (NOT A REGRESSION) libtsan is newly introduced, which fails with: 94 FATAL: ThreadSanitizer: unexpected memory mapping 0x200100000-0x200101000 95 [23]: sanitizers fail to build: 96 sanitizer_flag_parser.h:141:72: error: format '%zx' expects argument of type 'size_t', but argument 4 has type 'unsigned int' [-Werror=format=] 97 [24]: (NOT A REGRESSION) c++ exception handling is broken. mechanically applying 98 http://www.execsw.org/netbsd/changeset.cgi?id=20140318T234341Z.c59ac4642e7d4b345f6dc5aa9887e9e1f9aa459a#src/gnu/dist/gcc4/gcc/config/vax/vax.c 99 does not help (with adjustments for gcc 10.5.0, which is broken, too): 100 (gdb) invalid-command 101 [1] Illegal instruction (core dumped) gdb 102 [25]: (maybe not related to [24]) native gcc is broken: 103 simh# cc hello.c 104 during RTL pass: final 105 hello.c: In function 'main': 106 hello.c:9:1: internal compiler error: Segmentation fault 107 [26]: divide by zero with ubsan hits CheckLocked assertion failure, and stalls at LockSlow indefinitely: 108 (gdb) bt 109 #0 __sanitizer::StaticSpinMutex::LockSlow at sanitizer_mutex.cpp:24 110 ... 111 #17 __ubsan::ScopedReport::CheckLocked ubsan_diag.h:255 112 #18 __ubsan::Diag::~Diag ubsan_diag.cpp:347 113 #19 handleDivremOverflowImpl ubsan_diag.h:210 114 #20 __ubsan::__ubsan_handle_divrem_overflow ubsan_handlers.cpp:320 115 116 117 CPU vs platform test table (for CPUs with multiple ports). this is "make release" or just kernels. 118 values: y (yes), k (kernels only), n (failed), r (running), ? (not attempted), nx (yes, no x11), nk (no kernels available) 119 120 CPU platform list 121 --- -------- ---- 122 acorn32 cats epoc32 evbarm-eb evbarm-el hpcarm iyonix netwinder shark zaurus 123 earmv4: k k k k k k k y 124 earm: nx nx k k 125 earmhf: k k 126 earmv6: k k 127 earmv6hf: nx nx 128 earmv7: k k 129 earmv7hf: nx nx 130 131 amiga atari cesfic hp300 luna68k mac68k mvme68k news68k next68k sun3 x68k 132 m68k: nx k k k k nx k k k nx k 133 134 evbmips emips ews4800mips mipsco newsmips sgimips 135 mipseb: k k k k k y 136 137 evbmips algor arc cobalt hpcmips pmax 138 mipsel: k k k k k y 139 140 algor evbmips pmax 141 mips64eb: y 142 mips64el: k y y 143 144 amigappc bebox evbppc ibmnws macppc mvmeppc ofppc prep rs6000 sandpoint 145 powerpc: k k k k y k k k k k 146 147 evbppc macppc ofppc 148 powerpc64: nk nk nk 149 150 dreamcast evbsh3 hpcsh landisk mmeye 151 sh3eb: y k 152 sh3el: k y k k 153