-
Notifications
You must be signed in to change notification settings - Fork 0
Building QEMU
- https://github.com/foss-for-synopsys-dwc-arc-processors/qemu/wiki/Building-QEMU-for-ARC
- https://github.com/foss-for-synopsys-dwc-arc-processors/qemu/wiki/QEMU-and-Zephyr
- https://github.com/foss-for-synopsys-dwc-arc-processors/qemu/wiki/QEMU-traces
- https://github.com/foss-for-synopsys-dwc-arc-processors/qemu/wiki/Tips-and-Tricks-for-Troubleshooting
ℹ️ Refer to the official documentation for details.
Install necessary packages for Arch:
sudo pacman -S git cmake ninja gperf ccache dfu-util dtc wget \
python-pip python-setuptools python-wheel xz file makeInstall necessary packages for Fedora:
sudo dnf group install "Development Tools" "C Development Tools and Libraries"
dnf install git cmake ninja-build gperf ccache dfu-util dtc wget \
python3-pip xz file glibc-devel.i686 libstdc++-devel.i686Install necessary packages for Ubuntu:
sudo apt-get install --no-install-recommends git cmake ninja-build gperf \
ccache dfu-util device-tree-compiler wget \
python3-pip python3-setuptools python3-wheel \
xz-utils file make gcc gcc-multilibInstall necessary packages for Void:
sudo xbps-install git cmake ninja gperf ccache dfu-util dtc wget \
python3-pip python3-setuptools python3-wheel xz \
file makeThen prepare sources and a build directory:
git clone https://github.com/foss-for-synopsys-dwc-arc-processors/qemu
mkdir -p qemu/build
cd qemu/buildConfigure QEMU inside of the build directory (use your own --prefix value for installation path):
../configure --target-list=arc-softmmu,arc64-softmmu,arc-linux-user,arc64-linux-user \
--prefix=/tools/qemu --enable-debug --enable-debug-tcg --enable-trace-backends=simple \
--disable-plugins --skip-meson --disable-werror --disable-pie
What options are responsible for what:
-
--target-list=arc-softmmu,arc64-softmmu,arc-linux-user,arc64-linux-user— build QEMU both for these targets:-
qemu-system-arc— system emulation for ARC HS3x/4x/5x processors family; -
qemu-system-arc64— system emulation for ARC HS6x processors family; -
qemu-arc— user space Linux emulation for ARC HS3x/4x/5x processors family; -
qemu-arc64— user space Linux emulation for ARC HS6x processors family.
-
-
--prefix=/tools/qemu— an installation path. -
--enable-debug --enable-debug-tcg --enable-trace-backends=simple --disable-plugins— options for development needs. -
--enable-trace-backends=simple— for tracing (described in Profiling with QEMU). -
--skip-meson— do not run Meson on every build. -
--disable-werror— in case QEMU emits unexpected warnings. -
--disable-pie— needed for older GCC (like in CentOS 7).
To enable TCG testing, the arc-elf32-gcc and arc64-elf-gcc compilers must be available during configuration, and the following two arguments added to the command above:
--cross-cc-arc=arc-elf32-gcc --cross-cc-arc64=arc64-elf-gccBuild and install:
make
make installConfigure your environment:
export QEMU_HOME="/tools/qemu"
export PATH="${QEMU_HOME}/bin:$PATH"QEMU provides several tools to debug both itself and the binary being executed.
QEMU has a GDBstub with which it allows an external GDB instance to connect directly to the running executable. See more information about this in here.
If you require full system emulation, the GLibC tests show how to launch these and debug the running executable without having to the debug the whole kernel.
TCG is the internal language that powers QEMU.
There are some assembly tests that validate the basic function of several instructions in QEMU.
To run these, make sure that the compilers specified in '--cross-cc-arc' and '--cross-cc-arc64' are available during build time and when running the commands below:
make clean-tcg
make build-tcg
make check-tcg