This patch can be dropped. I noticed Kito finally fixed that before committing to master after I submitted this patch.
> On Oct 14, 2024, at 18:18, Yangyu Chen <chenyan...@isrc.iscas.ac.cn> wrote: > > The feature_bits.c file failed to compile on non-Linux targets because > we forgot to remove the __riscv_vendor_feature_bits.vendorID set > when target is not Linux. > > This commit fixed this and also has several improvements including: > - Initialize all data to zero when syscall is not supported. > - Add detailed comments on processing implied extensions. > > Fixes: ca44eb7f6a33 ("RISC-V: Implement __init_riscv_feature_bits, > __riscv_feature_bits, and > __riscv_vendor_feature_bits") > > libgcc/ChangeLog: > > * config/riscv/feature_bits.c (__init_riscv_features_bits_linux): > Remove __riscv_vendor_feature_bits.vendorID set when target is > not Linux, and initialize all data to zero when syscall is not > supported. > > Signed-off-by: Yangyu Chen <chenyan...@isrc.iscas.ac.cn> > --- > libgcc/config/riscv/feature_bits.c | 19 +++++++++++++++---- > 1 file changed, 15 insertions(+), 4 deletions(-) > > diff --git a/libgcc/config/riscv/feature_bits.c > b/libgcc/config/riscv/feature_bits.c > index 9bdbc466fee..44f8eeee4e7 100644 > --- a/libgcc/config/riscv/feature_bits.c > +++ b/libgcc/config/riscv/feature_bits.c > @@ -262,7 +262,15 @@ static void __init_riscv_features_bits_linux () > 0, 0); > > if (res) > - return; > + { > + /* When syscall is not supported, just initialize that into all zeros. > */ > + __riscv_feature_bits.length = 0; > + __riscv_vendor_feature_bits.length = 0; > + __riscv_cpu_model.mvendorid = 0; > + __riscv_cpu_model.marchid = 0; > + __riscv_cpu_model.mimpid = 0; > + return; > + } > > const struct riscv_hwprobe hwprobe_mvendorid = hwprobes[0]; > > @@ -290,9 +298,12 @@ static void __init_riscv_features_bits_linux () > } > > const struct riscv_hwprobe hwprobe_ima_ext = hwprobes[4]; > - > /* Every time we add new extensions, we should check if previous extensions > - imply the new extension and set the corresponding bit. */ > + imply the new extension and set the corresponding bit. > + We don't need to handle cases where: > + 1. The new extension implies a previous extension (e.g., Zve32f -> F). > + 2. The extensions imply some other extensions appear in the same > release > + version of Linux Kernel (e.g., Zbc - > Zbkc). */ > > if (hwprobe_ima_ext.value & RISCV_HWPROBE_IMA_FD) > { > @@ -397,7 +408,7 @@ __init_riscv_feature_bits () > #ifdef __linux > __init_riscv_features_bits_linux (); > #else > - /* Unsupported, just initlizaed that into all zeros. */ > + /* Unsupported, just initialize that into all zeros. */ > __riscv_feature_bits.length = 0; > __riscv_vendor_feature_bits.length = 0; > __riscv_cpu_model.mvendorid = 0; > -- > 2.45.2