aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.github/cleanup-rootfs.sh21
-rwxr-xr-x.github/setup-apt.sh2
-rw-r--r--.gitmodules19
-rw-r--r--Makefile.in16
-rw-r--r--README.md30
m---------binutils0
m---------gcc0
m---------gdb0
m---------qemu0
-rw-r--r--test/allowlist/gcc/common.log73
-rw-r--r--test/allowlist/gcc/gen.py50
-rw-r--r--test/allowlist/gcc/glibc.log80
-rw-r--r--test/allowlist/gcc/glibc.rv32.log40
-rw-r--r--test/allowlist/gcc/glibc.rv64.log12
-rw-r--r--test/allowlist/gcc/newlib-nano.f.log4
-rw-r--r--test/allowlist/gcc/newlib-nano.log34
-rw-r--r--test/allowlist/gcc/newlib.log18
-rw-r--r--test/allowlist/gcc/newlib.rv32.log8
-rw-r--r--test/allowlist/gcc/rv32.log13
19 files changed, 201 insertions, 219 deletions
diff --git a/.github/cleanup-rootfs.sh b/.github/cleanup-rootfs.sh
index 7d1b255..92f93f1 100755
--- a/.github/cleanup-rootfs.sh
+++ b/.github/cleanup-rootfs.sh
@@ -4,8 +4,7 @@
# while the process moves forward (for apt we'll need to wait for it to finish
# before we install dependencies later on, but it'll only give us a 1-3GBs so
# we can skip it.
-WAIT=0
-RMONLY=1
+WAIT=1 # Set to 1 if you want to wait for the cleanup to finish before proceeding.
PACKAGES=(
"firefox"
@@ -36,11 +35,9 @@ PATHS=(
function cleanup_packages()
{
- if [[ ${RMONLY} == 0 ]]; then
- apt-get purge -y "${PACKAGES[@]}"
- apt-get autoremove --purge -y
- apt-get clean
- fi
+ apt-get purge -y "${PACKAGES[@]}"
+ apt-get autoremove --purge -y
+ apt-get clean
}
function cleanup_paths()
@@ -53,14 +50,24 @@ function cleanup_paths()
fi
}
+function cleanup_docker()
+{
+ docker image prune --all --force &
+ if [[ ${WAIT} == 1 ]]; then
+ wait
+ fi
+}
+
if [[ ${WAIT} == 1 ]]; then
echo "---=== Before ===---"
df -hT
cleanup_packages
cleanup_paths
+ cleanup_docker
echo "---=== After ===---"
df -hT
else
cleanup_packages
cleanup_paths
+ cleanup_docker
fi
diff --git a/.github/setup-apt.sh b/.github/setup-apt.sh
index caf37c9..b56406c 100755
--- a/.github/setup-apt.sh
+++ b/.github/setup-apt.sh
@@ -6,4 +6,4 @@ apt update
apt install -y autoconf automake autotools-dev curl python3 python3-pip python3-tomli libmpc-dev libmpfr-dev \
libgmp-dev gawk build-essential bison flex texinfo gperf libtool \
patchutils bc zlib1g-dev libexpat-dev git ninja-build cmake libglib2.0-dev expect \
- device-tree-compiler python3-pyelftools libslirp-dev
+ device-tree-compiler python3-pyelftools libslirp-dev libzstd-dev
diff --git a/.gitmodules b/.gitmodules
index e1505e7..8850b2c 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,16 +1,19 @@
+# Some of the external git repos are not upstream servers but upstream clones to
+# avoid "Server does not allow request for unadvertised object" errors (see
+# #1654).
[submodule "binutils"]
path = binutils
- url = https://sourceware.org/git/binutils-gdb.git
- branch = binutils-2_43-branch
+ url = https://github.com/bminor/binutils-gdb.git
+ branch = binutils-2_44-branch
shallow = true
[submodule "gcc"]
path = gcc
- url = https://gcc.gnu.org/git/gcc.git
- branch = releases/gcc-14
+ url = https://github.com/gcc-mirror/gcc.git
+ branch = releases/gcc-15
shallow = true
[submodule "glibc"]
path = glibc
- url = https://sourceware.org/git/glibc.git
+ url = https://github.com/bminor/glibc.git
shallow = true
[submodule "dejagnu"]
path = dejagnu
@@ -19,13 +22,13 @@
shallow = true
[submodule "newlib"]
path = newlib
- url = https://sourceware.org/git/newlib-cygwin.git
+ url = https://github.com/bminor/newlib.git
branch = master
shallow = true
[submodule "gdb"]
path = gdb
- url = https://sourceware.org/git/binutils-gdb.git
- branch = gdb-15-branch
+ url = https://github.com/bminor/binutils-gdb.git
+ branch = gdb-16-branch
shallow = true
[submodule "qemu"]
path = qemu
diff --git a/Makefile.in b/Makefile.in
index b597a40..3abe1a9 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -17,14 +17,9 @@ LLVM_SRCDIR := @with_llvm_src@
DEJAGNU_SRCDIR := @with_dejagnu_src@
DEBUG_INFO := @debug_info@
ENABLE_DEFAULT_PIE := @enable_default_pie@
-DEJAGNU_SRCDIR := @with_dejagnu_src@
SIM ?= @WITH_SIM@
-# Shared lib suffix
-IS_DARWIN := $(shell uname -s | grep Darwin)
-SHARED_LIB_SUFFIX := $(if $(IS_DARWIN),dylib,so)
-
ifeq ($(srcdir)/gcc,$(GCC_SRCDIR))
# We need a relative source dir for the gcc configure, to make msys2 mingw64
# builds work. Mayberelsrcdir is relative if a relative path was used to run
@@ -1159,7 +1154,8 @@ stamps/build-llvm-linux: $(LLVM_SRCDIR) $(LLVM_SRC_GIT) $(BINUTILS_SRCDIR) $(BIN
-DLLVM_RUNTIME_TARGETS=$(call make_tuple,$(XLEN),linux-gnu) \
-DLLVM_INSTALL_TOOLCHAIN_ONLY=On \
-DLLVM_BINUTILS_INCDIR=$(BINUTILS_SRCDIR)/include \
- -DLLVM_PARALLEL_LINK_JOBS=4
+ -DLLVM_PARALLEL_LINK_JOBS=4 \
+ $(LLVM_EXTRA_CONFIGURE_FLAGS)
$(MAKE) -C $(notdir $@)
$(MAKE) -C $(notdir $@) install
# Build shared/static OpenMP libraries on RV64.
@@ -1204,7 +1200,6 @@ stamps/build-llvm-linux: $(LLVM_SRCDIR) $(LLVM_SRC_GIT) $(BINUTILS_SRCDIR) $(BIN
$(MAKE) -C $(notdir $@)/openmp-static install; \
fi
cp $(notdir $@)/lib/riscv$(XLEN)-unknown-linux-gnu/libc++* $(SYSROOT)/lib
- cp $(notdir $@)/lib/LLVMgold.$(SHARED_LIB_SUFFIX) $(INSTALL_DIR)/lib
cd $(INSTALL_DIR)/bin && ln -s -f clang $(LINUX_TUPLE)-clang && ln -s -f clang++ $(LINUX_TUPLE)-clang++
mkdir -p $(dir $@) && touch $@
@@ -1221,10 +1216,10 @@ stamps/build-llvm-newlib: $(LLVM_SRCDIR) $(LLVM_SRC_GIT) $(BINUTILS_SRCDIR) $(BI
-DLLVM_DEFAULT_TARGET_TRIPLE="$(NEWLIB_TUPLE)" \
-DLLVM_INSTALL_TOOLCHAIN_ONLY=On \
-DLLVM_BINUTILS_INCDIR=$(BINUTILS_SRCDIR)/include \
- -DLLVM_PARALLEL_LINK_JOBS=4
+ -DLLVM_PARALLEL_LINK_JOBS=4 \
+ $(LLVM_EXTRA_CONFIGURE_FLAGS)
$(MAKE) -C $(notdir $@)
$(MAKE) -C $(notdir $@) install
- cp $(notdir $@)/lib/LLVMgold.$(SHARED_LIB_SUFFIX) $(INSTALL_DIR)/lib
cd $(INSTALL_DIR)/bin && ln -s -f clang $(NEWLIB_TUPLE)-clang && \
ln -s -f clang++ $(NEWLIB_TUPLE)-clang++
mkdir -p $(dir $@) && touch $@
@@ -1359,7 +1354,7 @@ report-binutils-linux: stamps/check-binutils-linux
`find build-binutils-linux/ -name *.sum |paste -sd "," -`
clean:
- rm -rf build-* install-* stamps install-newlib-nano
+ rm -rf build-* install-* stamps
.PHONY: report-gdb-newlib report-gdb-newlib-nano
report-gdb-newlib: stamps/check-gdb-newlib
@@ -1382,7 +1377,6 @@ report-gdb-linux: stamps/check-gdb-linux
if find build-gdb-linux -iname '*.sum' | xargs grep ^FAIL | sort | grep -F -v $(patsubst %,--file=$(srcdir)/test/gdb-linux/%.log,$(GLIBC_MULTILIB_NAMES)); then false; else true; fi
distclean: clean
- rm -rf src
# All of the packages install themselves, so our install target does nothing.
install:
diff --git a/README.md b/README.md
index 40351aa..363840a 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ so `--recursive` or `git submodule update --init --recursive` is not needed.
### Prerequisites
-Several standard packages are needed to build the toolchain.
+Several standard packages are needed to build the toolchain.
On Ubuntu, executing the following command should suffice:
@@ -25,10 +25,10 @@ On Ubuntu, executing the following command should suffice:
On Fedora/CentOS/RHEL OS, executing the following command should suffice:
$ sudo yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk bison flex texinfo patchutils gcc gcc-c++ zlib-devel expat-devel libslirp-devel
-
+
On Arch Linux, executing the following command should suffice:
- $ sudo pacman -Syyu autoconf automake curl python3 libmpc mpfr gmp gawk base-devel bison flex texinfo gperf libtool patchutils bc zlib expat libslirp
+ $ sudo pacman -Syu curl python3 libmpc mpfr gmp base-devel texinfo gperf patchutils bc zlib expat libslirp
Also available for Arch users on the AUR: [https://aur.archlinux.org/packages/riscv-gnu-toolchain-bin](https://aur.archlinux.org/packages/riscv-gnu-toolchain-bin)
@@ -91,7 +91,7 @@ To build either cross-compiler with support for both 32-bit and
64-bit, run the following command:
./configure --prefix=/opt/riscv --enable-multilib
-
+
And then either `make`, `make linux` or `make musl` for the Newlib, Linux
glibc-based or Linux musl libc-based cross-compiler, respectively.
@@ -104,7 +104,7 @@ using the `--print-multi-lib` flag on either cross-compiler.
Linux toolchain has an additional option `--enable-default-pie` to control the
default PIE enablement for GCC, which is disable by default.
-To customize the enabled languages, use option `--with-languages=`. For example,
+To customize the enabled languages, use option `--with-languages=`. For example,
if you want to enable `c,c++,fortran`, use `./configure --with-languages=c,c++,fortran`.
This option only takes effect for the GNU toolchain.
@@ -126,7 +126,7 @@ is case-sensitive. A build on a case-insensitive filesystem will fail when
building glibc because \*.os and \*.oS files will clobber each other during
the build eventually resulting in confusing link errors.
-Centos (and RHEL) provide old GNU tools versions that may be too old to build
+CentOS (and RHEL) provide old GNU tools versions that may be too old to build
a RISC-V toolchain. There is an alternate toolset provided that includes
current versions of the GNU tools. This is the devtoolset provided as part
of the Software Collection service. For more info, see the
@@ -140,7 +140,7 @@ devtoolset-7 works.
There are a number of additional options that may be passed to
configure. See './configure --help' for more details.
-Also you can define extra flags to pass to specific projects: ```BINUTILS_NATIVE_FLAGS_EXTRA, BINUTILS_TARGET_FLAGS_EXTRA, GCC_EXTRA_CONFIGURE_FLAGS, GDB_NATIVE_FLAGS_EXTRA, GDB_TARGET_FLAGS_EXTRA, GLIBC_TARGET_FLAGS_EXTRA, NEWLIB_TARGET_FLAGS_EXTRA```.
+Also you can define extra flags to pass to specific projects: ```BINUTILS_NATIVE_FLAGS_EXTRA, BINUTILS_TARGET_FLAGS_EXTRA, GCC_EXTRA_CONFIGURE_FLAGS, GDB_NATIVE_FLAGS_EXTRA, GDB_TARGET_FLAGS_EXTRA, GLIBC_TARGET_FLAGS_EXTRA, NEWLIB_TARGET_FLAGS_EXTRA, LLVM_EXTRA_CONFIGURE_FLAGS```.
Example: ```GCC_EXTRA_CONFIGURE_FLAGS=--with-gmp=/opt/gmp make linux```
#### Set default ISA spec version
@@ -218,8 +218,8 @@ This flag is particularly useful for developers testing and emulating full RISC-
The Dejagnu test suite has been ported to RISC-V. This can be run with a
simulator for the elf and linux toolchains. The simulator can be selected
by the SIM variable in the Makefile, e.g. SIM=qemu, SIM=gdb, or SIM=spike
-(experimental).In addition, the simulator can also be selected with the
-configure time option `--with-sim=`.However, the testsuite allowlist is
+(experimental).In addition, the simulator can also be selected with the
+configure time option `--with-sim=`.However, the testsuite allowlist is
only maintained for qemu.Other simulators might get extra failures.
#### Additional Prerequisite
@@ -271,7 +271,7 @@ Note:
By default GCC will execute all tests of its regression test suite.
While running them in parallel (e.g. `make -j$(nproc) report`) will
-significanlty speed up the execution time on multi-processor systems,
+significantly speed up the execution time on multi-processor systems,
the required time for executing all tests is usually too high for
typical development cycles. Therefore GCC allows to select the tests
that are being executed using the environment variable `RUNTESTFLAGS`.
@@ -279,12 +279,12 @@ that are being executed using the environment variable `RUNTESTFLAGS`.
To restrict a test run to only RISC-V specific tests
the following command can be used:
- RUNTESTFLAGS="riscv.exp" make report
+ RUNTESTFLAGS="riscv.exp" make report
To restrict a test run to only RISC-V specific tests with match the
pattern "zb*.c" and "sm*.c" the following command can be used:
- RUNTESTFLAGS="riscv.exp=zb*.c\ sm*.c" make report
+ RUNTESTFLAGS="riscv.exp=zb*.c\ sm*.c" make report
#### Testing GCC, Binutils, and glibc of a Linux toolchain
@@ -422,7 +422,7 @@ toolchain with your own source tree.
#### Update Source Tree
`riscv-gnu-toolchain` contain stable but not latest source for each submodule,
-in case you want to using latest develoment tree, you can use following command
+in case you want to using latest development tree, you can use following command
to upgrade all submodule.
git submodule update --remote
@@ -490,8 +490,8 @@ sources is among them. The flag `--enable-host-gcc` does exaclty that:
### FAQ
#### Ensuring Code Model Consistency
-If parts of newlib are going to be replaced with an external library (such as with [libgloss-htif](https://github.com/ucb-bar/libgloss-htif) for Berkeley Host-Target Interface),
-you should take care to ensure that both newlib and the external library are built using the same code model. For more information about RISC-V code models,
+If parts of newlib are going to be replaced with an external library (such as with [libgloss-htif](https://github.com/ucb-bar/libgloss-htif) for Berkeley Host-Target Interface),
+you should take care to ensure that both newlib and the external library are built using the same code model. For more information about RISC-V code models,
[read this SiFive blog article](https://www.sifive.com/blog/all-aboard-part-4-risc-v-code-models).
Errors that indicate a code model mismatch include "relocation overflow" or "relocation truncated" errors from the linker being unable to successfully relocate symbols in the executable.
diff --git a/binutils b/binutils
-Subproject beb2cdbcda911764b2bed5e57921fe90493260b
+Subproject 815d9a14cbbb3b81843f7566222c87fb22e7255
diff --git a/gcc b/gcc
-Subproject 04696df09633baf97cdbbdd6e9929b9d472161d
+Subproject 1b306039ac49f8ad91ca71d3de3150a3c9fa792
diff --git a/gdb b/gdb
-Subproject 23c84db5b3cb4e8a0d555c76e1a0ab56dc8355f
+Subproject 800169229d1c69a6d9ad4a6f7b7481aca75eeef
diff --git a/qemu b/qemu
-Subproject ae35f033b874c627d81d51070187fbf55f0bf1a
+Subproject 7c949c53e936aa3a658d84ab53bae5cadaa5d59
diff --git a/test/allowlist/gcc/common.log b/test/allowlist/gcc/common.log
index 7262cf0..7e74b08 100644
--- a/test/allowlist/gcc/common.log
+++ b/test/allowlist/gcc/common.log
@@ -1,38 +1,35 @@
-#
-# XXX: Need review.
-#
-XPASS: gcc.dg/attr-alloc_size-11.c
-FAIL: g++.dg/modules/bad-mapper-3.C
-#
-# We didn't define TARGET_HAVE_SPECULATION_SAFE_VALUE or
-# speculation_barrier pattern
-#
-FAIL: c-c++-common/spec-barrier-1.c
-#
-# Fix upstream (77f3b3419d4) but no backport
-#
-UNRESOLVED: gcc.target/riscv/mcpu-6.c
-UNRESOLVED: gcc.target/riscv/mcpu-7.c
-FAIL: g++.dg/vect/pr95401.cc
-FAIL: gcc.dg/Wstringop-overflow-47.c
-#
-# Still fail on upstream(2024.8.12)
-#
-FAIL: gcc.dg/vect/costmodel/riscv/rvv/pr113281-1.c
-FAIL: gcc.dg/vect/costmodel/riscv/rvv/pr113281-2.c
-FAIL: gcc.dg/vect/costmodel/riscv/rvv/pr113281-5.c
-FAIL: gcc.dg/tree-ssa/ssa-dom-cse-2.c
-FAIL: gcc.dg/tree-ssa/update-threading.c
-FAIL: gcc.dg/vect/pr65310.c
-FAIL: gcc.dg/vect/pr88598-1.c
-FAIL: gcc.dg/vect/pr88598-2.c
-FAIL: gcc.dg/vect/pr88598-3.c
-FAIL: gcc.dg/vect/vect-gather-2.c
-FAIL: gcc.dg/plugin/cpython-plugin-test-PyList_Append.c
-FAIL: gcc.dg/plugin/cpython-plugin-test-PyList_New.c
-FAIL: gcc.dg/plugin/cpython-plugin-test-PyLong_FromLong.c
-#
-# Fail when don't have floating point support
-# see https://github.com/riscv-collab/riscv-gnu-toolchain/pull/1531#issuecomment-2373636158
-#
-FAIL: gcc.dg/pr110279-1.c
+FAIL: gcc.dg/vect/pr65310.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul2-5.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-5.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-3.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-6.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-1.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/pr113112-2.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-4.c
+FAIL: g++.target/riscv/redundant-bitmap-2.C
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-7.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-12.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-3.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul2-3.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-1.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul2-2.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-2.c
+FAIL: gcc.target/riscv/rvv/autovec/bug-3.c
+FAIL: gcc.dg/vect/pr88598-1.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-2.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-2.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul-mixed-1.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-7.c
+FAIL: gcc.dg/vect/pr88598-3.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/pr113112-4.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-4.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul2-4.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul2-1.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-11.c
+FAIL: c-c++-common/spec-barrier-1.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul1-5.c
+FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul2-6.c
+FAIL: gcc.dg/vect/vect-gather-2.c
+FAIL: gcc.dg/vect/pr88598-2.c
+# Added because machine performance can affect test results.
+FAIL: gcc.dg/tree-prof/time-profiler-2.c
diff --git a/test/allowlist/gcc/gen.py b/test/allowlist/gcc/gen.py
new file mode 100644
index 0000000..e06f9ce
--- /dev/null
+++ b/test/allowlist/gcc/gen.py
@@ -0,0 +1,50 @@
+from tqdm import tqdm
+import re
+
+def processlog(filename: str) -> set:
+ with open(filename, "r", encoding='utf-8') as f:
+ data = f.readlines()
+ set1 = set()
+ for line in tqdm(data):
+ result = re.match('^.*((FAIL|UNRESOLVED): .*.c) .*$',line) #使用正则表达式筛选每一行的数据,自行查找正则表达式
+ if result:
+ t = (result.group(1)) #group(1)将正则表达式的(/d.*/d)提取出来
+ set1.add(t)
+ return set1
+
+def writeset(filename: str, set1: set) -> None:
+ if len(set1)!=0:
+ with open(filename, "a", encoding='utf-8') as f1:
+ for t in tqdm(set1):
+ f1.write(t+'\n')
+
+newlib64=processlog("10_build (ubuntu-24.04, newlib, rv64gc-lp64d, gcc).txt")
+newlib32=processlog("25_build (ubuntu-24.04, newlib, rv32gc-ilp32d, gcc).txt")
+linux64=processlog("24_build (ubuntu-24.04, linux, rv64gc-lp64d, gcc).txt")
+linux32=processlog("15_build (ubuntu-24.04, linux, rv32gc-ilp32d, gcc).txt")
+
+# common should be 4 intersection
+commonerror=set.intersection(newlib64, newlib32, linux64, linux32)
+writeset("res/common.log",commonerror)
+# rv32
+rv32=set.intersection(newlib32, linux32)
+rv32=rv32-commonerror
+writeset("res/rv32.log",rv32)
+# rv64
+rv64=set.intersection(newlib64, linux64)
+rv64=rv64-commonerror
+writeset("res/rv64.log",rv64)
+# glibc
+glibc=set.intersection(linux32, linux64)
+glibc=glibc-commonerror
+writeset("res/glibc.log",glibc)
+# newlib
+newlib=set.intersection(newlib64, newlib32)
+newlib=newlib-commonerror
+writeset("res/newlib.log",newlib)
+
+# everything out of it
+writeset("res/glibc.rv32.log",linux32-rv32-glibc-commonerror)
+writeset("res/glibc.rv64.log",linux64-rv64-glibc-commonerror)
+writeset("res/newlib.rv32.log",newlib32-rv32-newlib-commonerror)
+writeset("res/newlib.rv64.log",newlib64-rv64-newlib-commonerror)
diff --git a/test/allowlist/gcc/glibc.log b/test/allowlist/gcc/glibc.log
index 6ef0d7f..84342cf 100644
--- a/test/allowlist/gcc/glibc.log
+++ b/test/allowlist/gcc/glibc.log
@@ -1,74 +1,6 @@
-#
-# XXX: Need review why.
-#
-FAIL: gfortran.dg/matmul_15.f90
-FAIL: gfortran.dg/ieee/comparisons_3.F90
-FAIL: gfortran.dg/ieee/ieee_1.F90
-FAIL: gfortran.dg/ieee/ieee_2.f90
-FAIL: gfortran.dg/ieee/ieee_6.f90
-FAIL: gfortran.dg/ieee/large_2.f90
-FAIL: gfortran.dg/ieee/large_3.F90
-FAIL: gfortran.dg/ieee/modes_1.f90
-FAIL: gfortran.dg/ieee/rounding_1.f90
-#
-# Fails if there is no F extension
-#
-FAIL: gfortran.dg/ieee/rounding_3.f90
-#
-# Fixed but not backport
-#
-UNRESOLVED: gcc.target/riscv/rvv/autovec/vls-vlmax/full-vec-move1.c
-FAIL: gcc.target/riscv/rvv/autovec/vls-vlmax/full-vec-move1.c
-#
-# Unknown random fail case.
-#
-FAIL: gcc.dg/tree-prof/time-profiler-2.c
-#
-# RVV fail cases(still exist on upstream)
-#
-FAIL: gcc.dg/vect/costmodel/riscv/rvv/pr113112-2.c
-FAIL: gcc.target/riscv/rvv/autovec/bug-1.c
-FAIL: gcc.target/riscv/rvv/autovec/pr113087-2.c
-FAIL: gcc.target/riscv/rvv/autovec/vls/misalign-1.c
-FAIL: gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-1.c
-FAIL: gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-2.c
-FAIL: gcc.target/riscv/rvv/base/abi-callee-saved-1-save-restore.c
-FAIL: gcc.target/riscv/rvv/base/abi-callee-saved-1-zcmp.c
-FAIL: gcc.target/riscv/rvv/base/abi-callee-saved-1.c
-FAIL: gcc.target/riscv/rvv/base/abi-callee-saved-2-save-restore.c
-FAIL: gcc.target/riscv/rvv/base/abi-callee-saved-2-zcmp.c
-FAIL: gcc.target/riscv/rvv/base/abi-callee-saved-2.c
-FAIL: gcc.target/riscv/rvv/base/pr110943.c
-FAIL: gcc.target/riscv/rvv/base/pr111533-2.c
-FAIL: gcc.target/riscv/rvv/base/pr112743-2.c
-FAIL: gcc.target/riscv/rvv/base/pr114639-1.c
-FAIL: gcc.target/riscv/rvv/base/pr115456-1.c
-FAIL: gcc.target/riscv/rvv/base/pr115456-2.c
-FAIL: gcc.target/riscv/rvv/base/pr115456-3.c
-FAIL: gcc.target/riscv/rvv/base/vlmul_ext-1.c
-FAIL: gcc.target/riscv/rvv/vsetvl/pr111234.c
-FAIL: gcc.target/riscv/rvv/vsetvl/pr115214.c
-FAIL: gcc.target/riscv/rvv/vsetvl/vsetvl-24.c
-UNRESOLVED: gcc.dg/vect/costmodel/riscv/rvv/pr113112-2.c
-UNRESOLVED: gcc.target/riscv/rvv/autovec/bug-1.c
-UNRESOLVED: gcc.target/riscv/rvv/autovec/pr113087-2.c
-UNRESOLVED: gcc.target/riscv/rvv/autovec/vls/misalign-1.c
-UNRESOLVED: gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-1.c
-UNRESOLVED: gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-2.c
-UNRESOLVED: gcc.target/riscv/rvv/base/abi-callee-saved-1-save-restore.c
-UNRESOLVED: gcc.target/riscv/rvv/base/abi-callee-saved-1-zcmp.c
-UNRESOLVED: gcc.target/riscv/rvv/base/abi-callee-saved-1.c
-UNRESOLVED: gcc.target/riscv/rvv/base/abi-callee-saved-2-save-restore.c
-UNRESOLVED: gcc.target/riscv/rvv/base/abi-callee-saved-2-zcmp.c
-UNRESOLVED: gcc.target/riscv/rvv/base/abi-callee-saved-2.c
-UNRESOLVED: gcc.target/riscv/rvv/base/pr110943.c
-UNRESOLVED: gcc.target/riscv/rvv/base/pr111533-2.c
-UNRESOLVED: gcc.target/riscv/rvv/base/pr112743-2.c
-UNRESOLVED: gcc.target/riscv/rvv/base/pr114639-1.c
-UNRESOLVED: gcc.target/riscv/rvv/base/pr115456-1.c
-UNRESOLVED: gcc.target/riscv/rvv/base/pr115456-2.c
-UNRESOLVED: gcc.target/riscv/rvv/base/pr115456-3.c
-UNRESOLVED: gcc.target/riscv/rvv/base/vlmul_ext-1.c
-UNRESOLVED: gcc.target/riscv/rvv/vsetvl/pr111234.c
-UNRESOLVED: gcc.target/riscv/rvv/vsetvl/pr115214.c
-UNRESOLVED: gcc.target/riscv/rvv/vsetvl/vsetvl-24.c
+UNRESOLVED: gcc.target/riscv/rvv/xtheadvector/prefix.c
+FAIL: gfortran.dg/ieee/modes_1.f90
+FAIL: gcc.target/riscv/rvv/vtype-call-clobbered.c
+UNRESOLVED: gcc.target/riscv/rvv/vtype-call-clobbered.c
+FAIL: gcc.target/riscv/rvv/xtheadvector/prefix.c
+FAIL: gfortran.dg/ieee/ieee_6.f90
diff --git a/test/allowlist/gcc/glibc.rv32.log b/test/allowlist/gcc/glibc.rv32.log
new file mode 100644
index 0000000..8c490ef
--- /dev/null
+++ b/test/allowlist/gcc/glibc.rv32.log
@@ -0,0 +1,40 @@
+FAIL: g++.target/riscv/rvv/autovec/pr116595.C
+UNRESOLVED: gcc.target/riscv/rvv/base/pr115456-2.c
+UNRESOLVED: gcc.target/riscv/rvv/autovec/pr113087-2.c
+UNRESOLVED: gcc.target/riscv/rvv/xsfvector/sf_vfnrclip_x_f_qf.c
+FAIL: gcc.target/riscv/rvv/autovec/vls/misalign-1.c
+UNRESOLVED: gcc.target/riscv/rvv/xsfvector/sf_vqmaccu_2x8x2.c
+FAIL: gcc.target/riscv/rvv/xsfvector/sf_vqmaccu_4x8x4.c
+UNRESOLVED: gcc.target/riscv/rvv/xsfvector/sf_vqmacc_4x8x4.c
+FAIL: gcc.target/riscv/rvv/xsfvector/sf_vqmacc_4x8x4.c
+UNRESOLVED: gcc.target/riscv/rvv/xsfvector/sf_vqmaccu_4x8x4.c
+FAIL: gcc.target/riscv/rvv/base/pr115456-1.c
+FAIL: gcc.target/riscv/rvv/xsfvector/sf_vqmaccus_2x8x2.c
+UNRESOLVED: gcc.target/riscv/rvv/base/pr115456-3.c
+FAIL: gcc.target/riscv/rvv/base/pr115456-2.c
+UNRESOLVED: gcc.target/riscv/rvv/xsfvector/sf_vfnrclip_xu_f_qf.c
+FAIL: gcc.target/riscv/rvv/xsfvector/sf_vqmaccus_4x8x4.c
+FAIL: gcc.target/riscv/rvv/base/pr111533-2.c
+UNRESOLVED: gcc.target/riscv/rvv/xsfvector/sf_vqmaccus_4x8x4.c
+UNRESOLVED: gcc.target/riscv/rvv/xsfvector/sf_vqmacc_2x8x2.c
+FAIL: gcc.target/riscv/rvv/xsfvector/sf_vfnrclip_xu_f_qf.c
+FAIL: gcc.target/riscv/rvv/xsfvector/sf_vqmaccsu_4x8x4.c
+UNRESOLVED: gcc.target/riscv/pr112398.c
+FAIL: gcc.target/riscv/pr112398.c
+FAIL: gcc.target/riscv/rvv/xsfvector/sf_vqmacc_2x8x2.c
+UNRESOLVED: gcc.target/riscv/rvv/autovec/bug-1.c
+UNRESOLVED: gcc.target/riscv/rvv/xsfvector/sf_vqmaccsu_4x8x4.c
+UNRESOLVED: gcc.target/riscv/rvv/base/pr115456-1.c
+FAIL: gcc.target/riscv/rvv/base/pr112743-2.c
+FAIL: gcc.target/riscv/rvv/xsfvector/sf_vqmaccsu_2x8x2.c
+FAIL: gcc.target/riscv/rvv/autovec/pr113087-2.c
+FAIL: gcc.target/riscv/slt-1.c
+FAIL: gcc.target/riscv/rvv/xsfvector/sf_vqmaccu_2x8x2.c
+FAIL: gcc.target/riscv/rvv/base/pr115456-3.c
+FAIL: gcc.target/riscv/rvv/xsfvector/sf_vfnrclip_x_f_qf.c
+FAIL: gcc.target/riscv/rvv/autovec/bug-1.c
+UNRESOLVED: gcc.dg/vect/costmodel/riscv/rvv/pr113112-2.c
+UNRESOLVED: gcc.target/riscv/slt-1.c
+UNRESOLVED: gcc.target/riscv/rvv/autovec/vls/misalign-1.c
+UNRESOLVED: gcc.target/riscv/rvv/xsfvector/sf_vqmaccsu_2x8x2.c
+UNRESOLVED: gcc.target/riscv/rvv/xsfvector/sf_vqmaccus_2x8x2.c
diff --git a/test/allowlist/gcc/glibc.rv64.log b/test/allowlist/gcc/glibc.rv64.log
new file mode 100644
index 0000000..a114ca2
--- /dev/null
+++ b/test/allowlist/gcc/glibc.rv64.log
@@ -0,0 +1,12 @@
+UNRESOLVED: gcc.target/riscv/rvv/xtheadvector/vlh-vsh.c
+FAIL: gcc.target/riscv/rvv/xtheadvector/vlbu-vsb.c
+FAIL: gcc.target/riscv/rvv/xtheadvector/vlh-vsh.c
+UNRESOLVED: gcc.target/riscv/rvv/xtheadvector/vlwu-vsw.c
+FAIL: gcc.target/riscv/rvv/xtheadvector/vlhu-vsh.c
+UNRESOLVED: gcc.target/riscv/rvv/xtheadvector/vlw-vsw.c
+UNRESOLVED: gcc.target/riscv/rvv/xtheadvector/vlb-vsb.c
+UNRESOLVED: gcc.target/riscv/rvv/xtheadvector/vlhu-vsh.c
+UNRESOLVED: gcc.target/riscv/rvv/xtheadvector/vlbu-vsb.c
+FAIL: gcc.target/riscv/rvv/xtheadvector/vlwu-vsw.c
+FAIL: gcc.target/riscv/rvv/xtheadvector/vlw-vsw.c
+FAIL: gcc.target/riscv/rvv/xtheadvector/vlb-vsb.c
diff --git a/test/allowlist/gcc/newlib-nano.f.log b/test/allowlist/gcc/newlib-nano.f.log
deleted file mode 100644
index 37b510a..0000000
--- a/test/allowlist/gcc/newlib-nano.f.log
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-# errno, failed because newlib nano didn't build with _POSIX_MODE
-#
-FAIL: gcc.dg/torture/pr68264.c
diff --git a/test/allowlist/gcc/newlib-nano.log b/test/allowlist/gcc/newlib-nano.log
deleted file mode 100644
index 9eb3e9c..0000000
--- a/test/allowlist/gcc/newlib-nano.log
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# We didn't init thread pointer in qemu nor newlib.
-#
-FAIL: gcc.dg/tls/pr78796.c execution test
-FAIL: g++.dg/cpp2a/decomp2.C
-#
-# freopen with stdout not work correctly for newlib
-#
-FAIL: gcc.c-torture/execute/user-printf.c
-FAIL: gcc.c-torture/execute/fprintf-2.c
-FAIL: gcc.c-torture/execute/printf-2.c
-#
-# newlib-nano didn't print out floating point by default,
-# program must link with -u_printf_float.
-#
-FAIL: g++.old-deja/g++.brendan/nest21.C
-FAIL: gcc.dg/torture/builtin-sprintf.c
-FAIL: gcc.dg/tree-ssa/builtin-sprintf.c
-FAIL: gcc.c-torture/execute/930513-1.c
-FAIL: gcc.c-torture/execute/920501-8.c
-FAIL: gcc.c-torture/execute/ieee/920810-1.c
-FAIL: gcc.c-torture/execute/printf-2.c
-#
-# newlib nano using LITE_EXIT, __register_exitproc won't link by default,
-# so dtor of global var not work properly.
-# Program must link with -u __register_exitproc to work properly.
-#
-FAIL: g++.dg/init/ref15.C
-FAIL: g++.old-deja/g++.other/init18.C
-FAIL: g++.old-deja/g++.pt/static11.C
-#
-# Missing dg-require-effective-target shared
-#
-FAIL: g++.dg/lto/pr87906
diff --git a/test/allowlist/gcc/newlib.log b/test/allowlist/gcc/newlib.log
index 50d20d8..2b877ee 100644
--- a/test/allowlist/gcc/newlib.log
+++ b/test/allowlist/gcc/newlib.log
@@ -1,14 +1,4 @@
-#
-# We didn't init thread pointer in qemu nor newlib.
-#
-FAIL: g++.dg/cpp2a/decomp2.C
-#
-# freopen with stdout not work correctly for newlib
-#
-FAIL: gcc.c-torture/execute/user-printf.c
-FAIL: gcc.c-torture/execute/fprintf-2.c
-FAIL: gcc.c-torture/execute/printf-2.c
-#
-# Spike execution fail
-#
-FAIL: g++.dg/vect/pr84556.cc
+FAIL: gcc.c-torture/execute/printf-2.c
+FAIL: gcc.c-torture/execute/fprintf-2.c
+FAIL: gcc.c-torture/execute/user-printf.c
+FAIL: g++.dg/cpp2a/decomp2.C
diff --git a/test/allowlist/gcc/newlib.rv32.log b/test/allowlist/gcc/newlib.rv32.log
deleted file mode 100644
index 1f1aee1..0000000
--- a/test/allowlist/gcc/newlib.rv32.log
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# RV32 only
-#
-UNRESOLVED: g++.dg/vect/pr115278.cc
-FAIL: g++.dg/vect/pr115278.cc
-FAIL: c-c++-common/analyzer/out-of-bounds-diagram-11.c
-FAIL: c-c++-common/analyzer/out-of-bounds-diagram-8.c
-FAIL: gcc.dg/analyzer/out-of-bounds-diagram-10.c
diff --git a/test/allowlist/gcc/rv32.log b/test/allowlist/gcc/rv32.log
index 758bc9f..5a98589 100644
--- a/test/allowlist/gcc/rv32.log
+++ b/test/allowlist/gcc/rv32.log
@@ -1,5 +1,8 @@
-#
-# RV32 only
-#
-FAIL: gcc.target/riscv/rvv/base/vwaddsub-1.c
-FAIL: gcc.dg/torture/pr113026-1.c
+UNRESOLVED: gcc.target/riscv/rvv/autovec/vls-vlmax/shuffle-slide.c
+FAIL: gcc.dg/tree-ssa/pr83403-1.c
+FAIL: gcc.dg/tree-ssa/pr83403-2.c
+FAIL: gcc.target/riscv/pr116715.c
+FAIL: gcc.dg/torture/pr113026-1.c
+FAIL: gcc.dg/pr90838-2.c
+UNRESOLVED: gcc.target/riscv/pr116715.c
+FAIL: gcc.target/riscv/rvv/autovec/vls-vlmax/shuffle-slide.c