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