keystone-enclave / keystone Goto Github PK
View Code? Open in Web Editor NEWKeystone Enclave (QEMU + HiFive Unleashed)
License: Other
Keystone Enclave (QEMU + HiFive Unleashed)
License: Other
It's been a while since QEMU, Linux and GNU tools have been upstreamed.
A LOT of new changes in the upstream will be required for some of our TODOs.
(1) RV32 support for the driver--> already been upstream Linux v5.0~
(2) QEMU bugs --> could have been fixed in the upstream QEMU. Also check if the distribution contains RISC-V. then, we don't even need to build our own QEMU
(3) Toolchain --> this has been always a headache for setting up the dev environment. Check if there is a distributed package.
I temporary pushed it to my repo, since the keystone changes are not merged to the sifive/freedom-u540-c000-bootloader at the moment.
Do you mind merging this to your repo?
mcd500/keystone-freedom-u540-c000-bootloader@bcc8b84
With the commit keystone-enclave/freedom-u540-c000-bootloader@3fe4313 which is fixing
the starting address of the payload, then it was calculating the hash crossing the boundary of sm area and payload area.
Fixing the length accordingly to prevent having different hash values for just loading different kernel.
We are currently porting zsbl and fsbl on fpga to make them build and run keystone on both fpgas and sifive Unleashed. Please give us some time to cleaning and testing them in the bellow link to be ready for pull requests.
https://github.com/mcd500/freedom/tree/vc707-zsbl-try
Describe the bug
The second tutorial, "hello_native", runs into a runtime exception when the following code is inserted to the eapp. The function inserted is not being called anywhere in the code.
#define __function_primitive_ocall 1001
int primitive_ocall(int arg1, int arg2) {
char __argument_space[8];
char __return_space[4];
*((int *) (__argument_space + 0)) = arg1;
*((int *) (__argument_space + 4)) = arg2;
ocall (__function_primitive_ocall, __argument_space, 8, __return_space, 4);
return *((int *) __return_space);
}
The runtime exception looks like below:
[runtime] non-handlable interrupt/exception at 0xffffffffc0000010 on 0xffffffffc0000010 (scause: 0xc)
the runtime could not handle exception 12
medeleg: 0x000000000000b109 (expected? 4096)
Build Failure
git submodule status
0d574e05ffc0555bf54ba9fa523b0dcb0d40cfe4 buildroot (2017.08-7602-g0d574e05ff)
43f0fd2e4508d4141c9303a40e3a401802192662 linux-keystone-driver (heads/master)
1b80cbe97d2c29212398d3b74ddc54718ad32e23 riscv-gnu-toolchain ((null))
65e929792fb9b632c20be118fa0795b26cc89fe4 riscv-linux (v4.15-60-g65e929792fb9)
7804d7ee89a5d1a0fb352929984b8f6fdd2667c4 riscv-pk (archive-1.9.1-222-g7804d7e)
3cc4afdb712638ffee307eeb672047f91597386e riscv-qemu (riscv-for-master-3.1-rc2-203-g3cc4afdb71)
+06d180873dd18e6860f60896a5f16f3e8785eb4a sdk (remotes/origin/HEAD)
It is on Ubuntu with dev branch.
Need to test it whenever we have time and update it.
I was trying to run the travis tests to validate the install and it was erroring without giving the real reason (just my suspicion that it did not launch qemu for some reason). I dug around and found out it was because I allocated my system with too little memory. Do you think we can add a check to give a proper error message about that or forward the error message to the travis script so that users can realize that they may need to allocate more memory for qemu to properly boot?
I have completed testing everything new in buildroot, so we can safely remove busybear now.
This article moves from the forum.
I found a heavy enclave processing suspend the Linux on SiFive Unleashed board.
After the heavy enclave processing, the Linux reactivates.
Is it correct behavior?
I attach a git-patch to create a heavy enclave processing in the keystone-demo.
https://github.com/keystone-enclave/keystone-demo
Please take care of the reproduction. My Linux may break the file system.
I can not boot the Linux now.
When the word counting runs in the enclave, the Linux behavior is suspended about 2 minutes.
The Linux suspension is clear when the first word counting. It stops the "top" command.
However, the "top" command can run during the second word counting.
What did it happen?
We need to package all the builds into single script (e.g., build.sh
) instead of executing each of the commands by hand.
Originally posted by @kunisuzaki in #112 (comment)
I confirmed the Linux works well along with heavy keystone processing.
However, I still have a question because the workload on Linux does not show the keystone processing.
While I monitor each core's workload with "htop", the "htop" does not show any busy cores.
Doesn't the Linux monitor the load on keystone because of Logical Partition?When I monitored the load on OP-TEE on ARM TrustZone, the Linux monitoring tool showed the Linux kernel consumes a core.
My guess is that the enclave is scheduled from the security monitor, which is not tracked by the Linux kernel. To fix this issue, one should understand how performance/load monitoring works in Linux, and modify the driver such that the linux is aware of time spent inside the enclave.
We are using a lot of _t
types we created. These are reserved names.
Current proposal is to move to _kt
for keystone-type.
Should we require ALL keystone types to have this naming convention? (Or just typedefs of non-struct types)
I tryed to use fast-setup first, but it didn't work. After that I saw your discussion. Then I turned to manual setup. Although the process was very slow and difficult, it completed and it reached to 1.2.1.3.1. Build All. I used "make" first and I came across the problem.
$make
mkdir -p buildroot/dl
make -f hifive.mk
make[1]: Entering directory '/home/gw/keystone'
make -s -C /home/gw/keystone/buildroot RISCV=/home/gw/keystone/riscv-gnu-toolchain/riscv PATH=/home/gw/keystone/riscv-gnu-toolchain/riscv/bin:/home/gw/bin:/home/gw/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:home/keystone/riscv/bin:/home/gw/keystone/riscv-gnu-toolchain/riscv/bin O=/home/gw/keystone/hifive-work/buildroot_initramfs
make[2]: Entering directory '/home/gw/keystone/buildroot'
ncurses 6.1 Configuring
configure: error: C compiler cannot create executables
package/pkg-generic.mk:228: recipe for target '/home/gw/keystone/hifive-work/buildroot_initramfs/build/ncurses-6.1/.stamp_configured' failed
make[3]: *** [/home/gw/keystone/hifive-work/buildroot_initramfs/build/ncurses-6.1/.stamp_configured] Error 77
Makefile:84: recipe for target '_all' failed
make[2]: *** [_all] Error 2
make[2]: Leaving directory '/home/gw/keystone/buildroot'
hifive.mk:62: recipe for target '/home/gw/keystone/hifive-work/buildroot_initramfs/images/rootfs.tar' failed
make[1]: *** [/home/gw/keystone/hifive-work/buildroot_initramfs/images/rootfs.tar] Error 2
make[1]: Leaving directory '/home/gw/keystone'
Makefile:17: recipe for target 'hifive' failed
make: *** [hifive] Error 2
Then I tried to use "sudo make" , the result was:
$sudo make
mkdir -p buildroot/dl
make -f hifive.mk
make[1]: Entering directory '/home/gw/keystone'
make[1]: *** No rule to make target '/home/gw/keystone/riscv/bin/riscv64-unknown-linux-gnu-gcc', needed by '/home/gw/keystone/hifive-work/buildroot_initramfs/images/rootfs.tar'。 停止。
make[1]: Leaving directory '/home/gw/keystone'
Makefile:17: recipe for target 'hifive' failed
make: *** [hifive] Error 2
Could you please tell me how to deal with the problem?
Since we have some good ELF libraries in SDK, we can calculate the hash in the user space.
We need a separate util that calculates the hash of enclave based on the parameters and the ELF files.
Currently we're using busybear, which was the only option when we started using QEMU.
There are couple options available now (e.g., buildroot or Fedora), so we need to switch the distribution for the sake of stability.
We need to enable networking in QEMU instance, so that we can run demo in QEMU
Following up the issue keystone-enclave/keystone-demo#2
./test
fails with
[Keystone SDK] src/keystone.cpp:78 : failed to create enclave - ioctl() failed: -1
which is caused by keystone_ioctl returning ENOTTY (-25)
During enclave execution we get very rare exception 12s.
Currently we've observed it about 1/2000 runs of ./test
, no known correlation or cause.
The security monitor spans (0x80000000-0x80200000)
and the last page (0x801ff000) is for secure bootstrapping parameters (e.g., attestation key, device pubkey, etc).
Currently, the last page is hard-coded as 0x802ff000 which is not protected by the PMP.
This is a mistake, and should be fixed as soon.
The only runner we have in sdk is test-runner
, which is shared by all tests (as well as SeL4 booting).
There're several configurable parameters such as freemem size, untrusted memory (shared buffer) size, and so on.
We want them to be configurable by passing command line arguments.
This issue is also related to the measurement utility #74
Current SM only allows naturally-aligned physical addresses.
CMA memory is not usually naturally aligned, and we need to manage PMP slightly differently with TOR decoding.
We can merge UTM_INIT, UTM_ALLOC, and FINALIZE ioctls into one (finalize)
We need to fix both sdk and the driver
Runtime dies with interrupt 0x9 (supervisor external interrupt).
Runtime should stop enclave and seamlessly resume after the OS interrupt handling.
Ideally, Eyrie with FreeMem support should map the shared buffer itself by parsing the physical address of the shared buffer.
[New to riscv and keystone]
I managed to compile and run busybear using qemu (upstream qemu 4.0.0, not riscv-qemu).
But when I was trying to run bbl, as documented in http://docs.keystone-enclave.org/en/latest/Getting-Started/Running-Keystone-with-QEMU.html, the QEMU process hangs forever with 100% CPU usage. It won't finish even after more than 24 hours.
Can someone give me some hints on where to look at?
BTW, I'm running on CentOS 7.
Many thanks.
Describe the bug
The current Keystone build does not work on Windows Subsystem for Linux upon make.
I think it is because that Windows-styled directory names contain brackets and spaces which the script does not recognize.
Screenshots or Error Log
The make log:
nisiyama@DESKTOP-SIS2I6D:~/Keystone/keystone$ make
make -C sdk
make[1]: Entering directory '/home/nisiyama/Keystone/keystone/sdk'
make -C lib
make[2]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/lib'
make -C app
make[3]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/lib/app'
riscv64-unknown-linux-gnu-gcc -Wall -Werror -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -Iinclude -c src/encret.s -o src/encret.o
riscv64-unknown-linux-gnu-gcc -Wall -Werror -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -Iinclude -c src/tiny-malloc.c -o src/tiny-malloc.o
riscv64-unknown-linux-gnu-gcc -Wall -Werror -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -Iinclude -c src/string.c -o src/string.o
riscv64-unknown-linux-gnu-gcc -Wall -Werror -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -Iinclude -c src/syscall.c -o src/syscall.o
riscv64-unknown-elf-ar rcs ../libkeystone-eapp.a src/encret.o src/tiny-malloc.o src/string.o src/syscall.o
make[3]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/lib/app'
make -C host
make[3]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/lib/host'
riscv64-unknown-linux-gnu-g++ -Wall -Werror -I include/ -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -c src/keystone.cpp
riscv64-unknown-linux-gnu-g++ -Wall -Werror -I include/ -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -c src/elffile.cpp
riscv64-unknown-linux-gnu-g++ -Wall -Werror -I include/ -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -c src/elf.cpp
riscv64-unknown-linux-gnu-g++ -Wall -Werror -I include/ -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -c src/elf32.cpp
riscv64-unknown-linux-gnu-g++ -Wall -Werror -I include/ -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -c src/elf64.cpp
riscv64-unknown-linux-gnu-ar rcs ../libkeystone-host.a keystone.o elffile.o elf.o elf32.o elf64.o
make[3]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/lib/host'
make -C edge
make[3]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/lib/edge'
riscv64-unknown-linux-gnu-gcc -Wall -Werror -Iinclude/ -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -c src/edge_call.c -o src/edge_call.o
riscv64-unknown-linux-gnu-gcc -Wall -Werror -Iinclude/ -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -c src/edge_dispatch.c -o src/edge_dispatch.o
riscv64-unknown-linux-gnu-gcc -Wall -Werror -Iinclude/ -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -c src/edge_syscall.c -o src/edge_syscall.o
riscv64-unknown-elf-ar rcs ../libkeystone-edge.a src/edge_call.o src/edge_dispatch.o src/edge_syscall.o
make[3]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/lib/edge'
make -C verifier
make[3]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/lib/verifier'
riscv64-unknown-linux-gnu-g++ -Wall -Werror -I ./ -std=gnu++11 -c ed25519/fe.c -o ed25519/fe.o
riscv64-unknown-linux-gnu-g++ -Wall -Werror -I ./ -std=gnu++11 -c ed25519/ge.c -o ed25519/ge.o
riscv64-unknown-linux-gnu-g++ -Wall -Werror -I ./ -std=gnu++11 -c ed25519/sc.c -o ed25519/sc.o
riscv64-unknown-linux-gnu-g++ -Wall -Werror -I ./ -std=gnu++11 -c ed25519/verify.c -o ed25519/verify.o
riscv64-unknown-linux-gnu-g++ -Wall -Werror -I ./ -std=gnu++11 -c ed25519/sign.c -o ed25519/sign.o
riscv64-unknown-linux-gnu-g++ -Wall -Werror -I ./ -std=gnu++11 -c sha3/sha3.c -o sha3/sha3.o
riscv64-unknown-linux-gnu-g++ -Wall -Werror -I ./ -std=gnu++11 -c json11.cpp
riscv64-unknown-linux-gnu-g++ -Wall -Werror -I ./ -std=gnu++11 -c keys.cpp
riscv64-unknown-linux-gnu-g++ -Wall -Werror -I ./ -std=gnu++11 -c report.cpp
riscv64-unknown-linux-gnu-ar rcs ../libkeystone-verifier.a ed25519/fe.o ed25519/ge.o ed25519/sc.o ed25519/verify.o ed25519/sign.o sha3/sha3.o json11.o keys.o report.o
#riscv64-unknown-linux-gnu-g++ -std=gnu++11 test.cpp ../libkeystone-verifier.a -o test
make[3]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/lib/verifier'
make[2]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/lib'
make -C runtime
make[2]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/runtime'
riscv64-unknown-linux-gnu-gcc -Wall -Werror -fPIC -fno-builtin -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -I../lib/edge/include -I ./tmplib -c entry.S
make -C tmplib
make[3]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/runtime/tmplib'
riscv64-unknown-linux-gnu-gcc -Wall -Werror -fPIC -I. -D__riscv_xlen=64 -D__ASSEMBLY__ -include partial_linkage.h -c uaccess.S
cp uaccess.o ../
make[3]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/runtime/tmplib'
riscv64-unknown-linux-gnu-gcc -Wall -Werror -fPIC -fno-builtin -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -I../lib/edge/include -I ./tmplib -c boot.c
riscv64-unknown-linux-gnu-gcc -Wall -Werror -fPIC -fno-builtin -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -I../lib/edge/include -I ./tmplib -c interrupt.c
riscv64-unknown-linux-gnu-gcc -Wall -Werror -fPIC -fno-builtin -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -I../lib/edge/include -I ./tmplib -c printf.c
riscv64-unknown-linux-gnu-gcc -Wall -Werror -fPIC -fno-builtin -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -I../lib/edge/include -I ./tmplib -c syscall.c
riscv64-unknown-linux-gnu-gcc -Wall -Werror -fPIC -fno-builtin -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -I../lib/edge/include -I ./tmplib -c string.c
riscv64-unknown-linux-gnu-gcc -Wall -Werror -fPIC -fno-builtin -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -I../lib/edge/include -I ./tmplib -c linux_wrap.c
riscv64-unknown-linux-gnu-gcc -Wall -Werror -fPIC -fno-builtin -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -I../lib/edge/include -I ./tmplib -c io_wrap.c
riscv64-unknown-linux-gnu-gcc -Wall -Werror -fPIC -fno-builtin -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -I../lib/edge/include -I ./tmplib -c rt_util.c
riscv64-unknown-linux-gnu-gcc -Wall -Werror -fPIC -fno-builtin -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -I../lib/edge/include -I ./tmplib -c mm.c
riscv64-unknown-linux-gnu-gcc -Wall -Werror -fPIC -fno-builtin -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -I../lib/edge/include -I ./tmplib -c env.c
riscv64-unknown-linux-gnu-gcc -Wall -Werror -fPIC -fno-builtin -DIO_SYSCALL_WRAPPING -DLINUX_SYSCALL_WRAPPING -DUSE_FREEMEM -DENV_SETUP -I../lib/edge/include -I ./tmplib -c freemem.c
riscv64-unknown-linux-gnu-ld -o eyrie-rt entry.o boot.o interrupt.o printf.o syscall.o string.o linux_wrap.o io_wrap.o rt_util.o mm.o env.o freemem.o ../lib/libkeystone-edge.a uaccess.o -T runtime.lds
make[2]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/runtime'
make -C tests
make[2]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/tests'
riscv64-unknown-linux-gnu-g++ -I../lib/host/include -I../lib/edge/include -I../lib/verifier -std=c++11 -c test-runner.cpp
In file included from test-runner.cpp:11:0:
../lib/verifier/test_dev_key.h:3:2: warning: #warning Using TEST device root key. No integrity guarantee. [-Wcpp]
#warning Using TEST device root key. No integrity guarantee.
^~~~~~~
riscv64-unknown-linux-gnu-g++ -I../lib/host/include -I../lib/edge/include -I../lib/verifier -std=c++11 -c edge_wrapper.cpp
riscv64-unknown-linux-gnu-g++ -I../lib/host/include -I../lib/edge/include -I../lib/verifier -std=c++11 -L../lib -o test-runner.riscv test-runner.o edge_wrapper.o ../lib/libkeystone-host.a ../lib/libkeystone-edge.a ../lib/libkeystone-verifier.a
make -C stack; make -C fibonacci; make -C long-nop; make -C loop; make -C malloc; make -C fib-bench; make -C untrusted; make -C attestation;
make[3]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/tests/stack'
riscv64-unknown-linux-gnu-as -o stack.o stack.s
riscv64-unknown-linux-gnu-ld -static -L../../lib -lkeystone-eapp -o stack.eapp_riscv stack.o ../../lib/libkeystone-eapp.a -T ../app.lds
chmod -x stack.eapp_riscv
make[3]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/tests/stack'
make[3]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/tests/fibonacci'
riscv64-unknown-linux-gnu-gcc -Wall -Werror -I../../lib/app/include -c fibonacci.c
riscv64-unknown-linux-gnu-ld -static -L../../lib -lkeystone-eapp -o fibonacci.eapp_riscv fibonacci.o ../../lib/libkeystone-eapp.a -T ../app.lds
chmod -x fibonacci.eapp_riscv
make[3]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/tests/fibonacci'
make[3]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/tests/long-nop'
riscv64-unknown-linux-gnu-as -o long-nop.o long-nop.s
./generate_func.sh 4097 add_long.s
riscv64-unknown-linux-gnu-as -o add_long.o add_long.s
riscv64-unknown-linux-gnu-ld -static -L../../lib -lkeystone-eapp -o long-nop.eapp_riscv long-nop.o add_long.o ../../lib/libkeystone-eapp.a -T ../app.lds
chmod -x long-nop.eapp_riscv
make[3]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/tests/long-nop'
make[3]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/tests/loop'
riscv64-unknown-linux-gnu-as -o loop.o loop.s
riscv64-unknown-linux-gnu-ld -static -L../../lib -lkeystone-eapp -o loop.eapp_riscv loop.o ../../lib/libkeystone-eapp.a -T ../app.lds
chmod -x loop.eapp_riscv
make[3]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/tests/loop'
make[3]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/tests/malloc'
riscv64-unknown-linux-gnu-gcc -Wall -Werror -I../../lib/app/include -c malloc.c
riscv64-unknown-linux-gnu-ld -static -L../../lib -lkeystone-eapp -o malloc.eapp_riscv malloc.o ../../lib/libkeystone-eapp.a -T ../app.lds
chmod -x malloc.eapp_riscv
make[3]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/tests/malloc'
make[3]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/tests/fib-bench'
riscv64-unknown-linux-gnu-gcc -Wall -Werror -I../../lib/app/include -c fib-bench.c
riscv64-unknown-linux-gnu-ld -static -L../../lib -lkeystone-eapp -o fib-bench.eapp_riscv fib-bench.o ../../lib/libkeystone-eapp.a -T ../app.lds
chmod -x fib-bench.eapp_riscv
make[3]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/tests/fib-bench'
make[3]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/tests/untrusted'
riscv64-unknown-linux-gnu-gcc -Wall -Werror -I../../lib/app/include -I../../lib/edge/include -c untrusted.c
riscv64-unknown-linux-gnu-gcc -Wall -Werror -I../../lib/app/include -I../../lib/edge/include -c edge_wrapper.c
riscv64-unknown-linux-gnu-ld -static -L../../lib -o untrusted.eapp_riscv untrusted.o edge_wrapper.o ../../lib/libkeystone-eapp.a ../../lib/libkeystone-edge.a -T ../app.lds
chmod -x untrusted.eapp_riscv
make[3]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/tests/untrusted'
make[3]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/tests/attestation'
riscv64-unknown-linux-gnu-gcc -Wall -Werror -I../../lib/app/include -I../../lib/edge/include -c attestation.c
riscv64-unknown-linux-gnu-gcc -Wall -Werror -I../../lib/app/include -I../../lib/edge/include -c edge_wrapper.c
riscv64-unknown-linux-gnu-ld -static -L../../lib -o attestation.eapp_riscv attestation.o edge_wrapper.o ../../lib/libkeystone-eapp.a ../../lib/libkeystone-edge.a -T ../app.lds
chmod -x attestation.eapp_riscv
make[3]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/tests/attestation'
rm -f test
echo "echo 'testing stack'" >> test; echo "./test-runner.riscv stack.eapp_riscv eyrie-rt" >> test; echo "echo 'testing fibonacci'" >> test; echo "./test-runner.riscv fibonacci.eapp_riscv eyrie-rt" >> test; echo "echo 'testing long-nop'" >> test; echo "./test-runner.riscv long-nop.eapp_riscv eyrie-rt" >> test; echo "echo 'testing loop'" >> test; echo "./test-runner.riscv loop.eapp_riscv eyrie-rt" >> test; echo "echo 'testing malloc'" >> test; echo "./test-runner.riscv malloc.eapp_riscv eyrie-rt" >> test; echo "echo 'testing fib-bench'" >> test; echo "./test-runner.riscv fib-bench.eapp_riscv eyrie-rt" >> test; echo "echo 'testing untrusted'" >> test; echo "./test-runner.riscv untrusted.eapp_riscv eyrie-rt" >> test; echo "echo 'testing attestation'" >> test; echo "./test-runner.riscv attestation.eapp_riscv eyrie-rt" >> test;
chmod +x test
make[2]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/tests'
make -C samples
make[2]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/samples'
make -C tiny-AES-c
make[3]: Entering directory '/home/nisiyama/Keystone/keystone/sdk/samples/tiny-AES-c'
riscv64-unknown-linux-gnu-g++ -I../../lib/host/include -c aes.cpp
riscv64-unknown-linux-gnu-g++ -I../../lib/host/include -L../../lib -o aes.riscv aes.o ../../lib/libkeystone-host.a
make[3]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/samples/tiny-AES-c'
make[2]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk/samples'
mkdir -p bin/
cp tests/*/*.eapp_riscv tests/test tests/test-runner.riscv bin/
cp samples/tiny-AES-c/aes.riscv bin/
cp runtime/eyrie-rt bin/
make[1]: Leaving directory '/home/nisiyama/Keystone/keystone/sdk'
./scripts/apply-patch.sh
patching file hw/riscv/boot.c
patching file arch/riscv/mm/dma.c
patching file arch/riscv/mm/init.c
cd riscv-qemu; ./configure --target-list=riscv64-softmmu,riscv32-softmmu;
Install prefix /usr/local
BIOS directory /usr/local/share/qemu
firmware path /usr/local/share/qemu-firmware
binary directory /usr/local/bin
library directory /usr/local/lib
module directory /usr/local/lib/qemu
libexec directory /usr/local/libexec
include directory /usr/local/include
config directory /usr/local/etc
local state directory /usr/local/var
Manual directory /usr/local/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /home/nisiyama/Keystone/keystone/riscv-qemu
GIT binary git
GIT submodules ui/keycodemapdb tests/fp/berkeley-testfloat-3 tests/fp/berkeley-softfloat-3 dtc capstone
C compiler cc
Host C compiler cc
C++ compiler c++
Objective-C compiler cc
ARFLAGS rv
CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g
QEMU_CFLAGS -I/usr/include/pixman-1 -I$(SRC_PATH)/dtc/libfdt -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wexpansion-to-defined -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -I$(SRC_PATH)/capstone/include
LDFLAGS -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g
QEMU_LDFLAGS -L$(BUILD_DIR)/dtc/libfdt
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU x86_64
host big endian no
target list riscv64-softmmu riscv32-softmmu
gprof enabled no
sparse enabled no
strip binaries yes
profiler no
static build no
SDL support no
GTK support no
GTK GL support no
VTE support no
TLS priority NORMAL
GNUTLS support no
libgcrypt no
nettle no
libtasn1 no
curses support no
virgl support no
curl support no
mingw32 support no
Audio drivers oss
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
Multipath support no
VNC support yes
VNC SASL support no
VNC JPEG support no
VNC PNG support no
xen support no
brlapi support no
bluez support no
Documentation yes
PIE yes
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support yes
Install blobs yes
KVM support yes
HAX support no
HVF support no
WHPX support no
TCG support yes
TCG debug enabled no
TCG interpreter no
malloc trim support yes
RDMA support no
PVRDMA support no
fdt support git
membarrier no
preadv support yes
fdatasync yes
madvise yes
posix_madvise yes
posix_memalign yes
libcap-ng support no
vhost-net support yes
vhost-crypto support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends log
spice support no
rbd support no
xfsctl support no
smartcard support no
libusb no
usb net redir no
OpenGL support no
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info no
QGA MSI support no
seccomp support no
coroutine backend ucontext
coroutine pool yes
debug stack usage no
mutex debugging no
crypto afalg no
GlusterFS support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support no
TPM passthrough yes
TPM emulator yes
QOM debugging yes
Live block migration yes
lzo support no
snappy support no
bzip2 support no
NUMA host support no
libxml2 no
tcmalloc support no
jemalloc support no
avx2 optimization yes
replication support yes
VxHS block device no
bochs support yes
cloop support yes
dmg support yes
qcow v1 support yes
vdi support yes
vvfat support yes
qed support yes
parallels support yes
sheepdog support yes
capstone git
docker no
libpmem support no
libudev no
make -C riscv-qemu
make[1]: Entering directory '/home/nisiyama/Keystone/keystone/riscv-qemu'
GEN riscv64-softmmu/config-devices.mak.tmp
GEN riscv64-softmmu/config-devices.mak
GEN riscv32-softmmu/config-devices.mak.tmp
GEN riscv32-softmmu/config-devices.mak
GEN config-all-devices.mak
GEN config-host.h
GIT ui/keycodemapdb tests/fp/berkeley-testfloat-3 tests/fp/berkeley-softfloat-3 dtc capstone
DEP tests/dumptrees.c
DEP tests/trees.S
DEP tests/testutils.c
DEP tests/value-labels.c
DEP tests/asm_tree_dump.c
DEP tests/truncated_memrsv.c
DEP tests/truncated_string.c
DEP tests/truncated_property.c
DEP tests/check_full.c
DEP tests/check_header.c
DEP tests/check_path.c
DEP tests/overlay_bad_fixup.c
DEP tests/overlay.c
DEP tests/subnode_iterate.c
DEP tests/property_iterate.c
DEP tests/integer-expressions.c
DEP tests/utilfdt_test.c
DEP tests/path_offset_aliases.c
DEP tests/add_subnode_with_nops.c
DEP tests/dtbs_equal_unordered.c
DEP tests/dtb_reverse.c
DEP tests/dtbs_equal_ordered.c
DEP tests/extra-terminating-null.c
DEP tests/incbin.c
DEP tests/boot-cpuid.c
DEP tests/phandle_format.c
DEP tests/path-references.c
DEP tests/references.c
DEP tests/string_escapes.c
DEP tests/propname_escapes.c
DEP tests/appendprop2.c
DEP tests/appendprop1.c
DEP tests/del_node.c
DEP tests/del_property.c
DEP tests/setprop.c
DEP tests/set_name.c
DEP tests/rw_tree1.c
DEP tests/open_pack.c
DEP tests/nopulate.c
DEP tests/mangle-layout.c
DEP tests/move_and_save.c
DEP tests/sw_states.c
DEP tests/sw_tree1.c
DEP tests/nop_node.c
DEP tests/nop_property.c
DEP tests/setprop_inplace.c
DEP tests/stringlist.c
DEP tests/addr_size_cells2.c
DEP tests/addr_size_cells.c
DEP tests/notfound.c
DEP tests/sized_cells.c
DEP tests/char_literal.c
DEP tests/get_alias.c
DEP tests/node_offset_by_compatible.c
DEP tests/node_check_compatible.c
DEP tests/node_offset_by_phandle.c
DEP tests/node_offset_by_prop_value.c
DEP tests/parent_offset.c
DEP tests/supernode_atdepth_offset.c
DEP tests/get_path.c
DEP tests/get_phandle.c
DEP tests/getprop.c
DEP tests/get_name.c
DEP tests/path_offset.c
DEP tests/subnode_offset.c
DEP tests/find_property.c
DEP tests/root_node.c
DEP tests/get_mem_rsv.c
DEP libfdt/fdt_overlay.c
DEP libfdt/fdt_addresses.c
DEP libfdt/fdt_empty_tree.c
DEP libfdt/fdt_strerror.c
DEP libfdt/fdt_rw.c
DEP libfdt/fdt_sw.c
DEP libfdt/fdt_wip.c
DEP libfdt/fdt_ro.c
DEP libfdt/fdt.c
DEP util.c
DEP fdtoverlay.c
DEP fdtput.c
DEP fdtget.c
DEP fdtdump.c
LEX convert-dtsv0-lexer.lex.c
DEP convert-dtsv0-lexer.lex.c
DEP srcpos.c
BISON dtc-parser.tab.c
DEP dtc-parser.tab.c
LEX dtc-lexer.lex.c
DEP dtc-lexer.lex.c
DEP treesource.c
DEP livetree.c
DEP fstree.c
DEP flattree.c
DEP dtc.c
DEP data.c
DEP checks.c
CHK version_gen.h
UPD version_gen.h
DEP util.c
CHK version_gen.h
CC libfdt/fdt.o
CC libfdt/fdt_ro.o
CC libfdt/fdt_wip.o
CC libfdt/fdt_sw.o
CC libfdt/fdt_rw.o
CC libfdt/fdt_strerror.o
CC libfdt/fdt_empty_tree.o
CC libfdt/fdt_addresses.o
CC libfdt/fdt_overlay.o
AR libfdt/libfdt.a
ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
CC cs.o
CC utils.o
CC SStream.o
CC MCInstrDesc.o
CC MCRegisterInfo.o
CC arch/ARM/ARMDisassembler.o
CC arch/ARM/ARMInstPrinter.o
CC arch/ARM/ARMMapping.o
CC arch/ARM/ARMModule.o
CC arch/AArch64/AArch64BaseInfo.o
CC arch/AArch64/AArch64Disassembler.o
CC arch/AArch64/AArch64InstPrinter.o
CC arch/AArch64/AArch64Mapping.o
CC arch/AArch64/AArch64Module.o
CC arch/Mips/MipsDisassembler.o
CC arch/Mips/MipsInstPrinter.o
CC arch/Mips/MipsMapping.o
CC arch/Mips/MipsModule.o
CC arch/PowerPC/PPCDisassembler.o
CC arch/PowerPC/PPCInstPrinter.o
CC arch/PowerPC/PPCMapping.o
CC arch/PowerPC/PPCModule.o
CC arch/Sparc/SparcDisassembler.o
CC arch/Sparc/SparcInstPrinter.o
CC arch/Sparc/SparcMapping.o
CC arch/Sparc/SparcModule.o
CC arch/SystemZ/SystemZDisassembler.o
CC arch/SystemZ/SystemZInstPrinter.o
CC arch/SystemZ/SystemZMapping.o
CC arch/SystemZ/SystemZModule.o
CC arch/SystemZ/SystemZMCTargetDesc.o
CC arch/X86/X86DisassemblerDecoder.o
CC arch/X86/X86Disassembler.o
CC arch/X86/X86IntelInstPrinter.o
CC arch/X86/X86ATTInstPrinter.o
CC arch/X86/X86Mapping.o
CC arch/X86/X86Module.o
CC arch/XCore/XCoreDisassembler.o
CC arch/XCore/XCoreInstPrinter.o
CC arch/XCore/XCoreMapping.o
CC arch/XCore/XCoreModule.o
CC MCInst.o
AR libcapstone.a
ar: creating /home/nisiyama/Keystone/keystone/riscv-qemu/capstone/libcapstone.a
GEN qemu-options.def
GEN qapi-gen
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
GEN trace/generated-helpers.h
GEN trace/generated-helpers.c
GEN module_block.h
GEN ui/input-keymap-atset1-to-qcode.c
GEN ui/input-keymap-linux-to-qcode.c
GEN ui/input-keymap-qcode-to-atset1.c
GEN ui/input-keymap-qcode-to-atset2.c
GEN ui/input-keymap-qcode-to-atset3.c
GEN ui/input-keymap-qcode-to-linux.c
GEN ui/input-keymap-qcode-to-qnum.c
GEN ui/input-keymap-qcode-to-sun.c
GEN ui/input-keymap-qnum-to-qcode.c
GEN ui/input-keymap-usb-to-qcode.c
GEN ui/input-keymap-win32-to-qcode.c
GEN ui/input-keymap-x11-to-qcode.c
GEN ui/input-keymap-xorgevdev-to-qcode.c
GEN ui/input-keymap-xorgkbd-to-qcode.c
GEN ui/input-keymap-xorgxquartz-to-qcode.c
GEN ui/input-keymap-xorgxwin-to-qcode.c
GEN ui/input-keymap-osx-to-qcode.c
GEN tests/test-qapi-gen
GEN trace-root.h
GEN accel/kvm/trace.h
GEN accel/tcg/trace.h
GEN audio/trace.h
GEN block/trace.h
GEN chardev/trace.h
GEN crypto/trace.h
GEN hw/9pfs/trace.h
GEN hw/acpi/trace.h
GEN hw/alpha/trace.h
GEN hw/arm/trace.h
GEN hw/audio/trace.h
GEN hw/block/trace.h
GEN hw/block/dataplane/trace.h
GEN hw/char/trace.h
GEN hw/display/trace.h
GEN hw/dma/trace.h
GEN hw/hppa/trace.h
GEN hw/i2c/trace.h
GEN hw/i386/trace.h
GEN hw/i386/xen/trace.h
GEN hw/ide/trace.h
GEN hw/input/trace.h
GEN hw/intc/trace.h
GEN hw/isa/trace.h
GEN hw/mem/trace.h
GEN hw/misc/trace.h
GEN hw/misc/macio/trace.h
GEN hw/net/trace.h
GEN hw/nvram/trace.h
GEN hw/pci/trace.h
GEN hw/pci-host/trace.h
GEN hw/ppc/trace.h
GEN hw/riscv/trace.h
GEN hw/rdma/trace.h
GEN hw/rdma/vmw/trace.h
GEN hw/s390x/trace.h
GEN hw/scsi/trace.h
GEN hw/sd/trace.h
GEN hw/sparc/trace.h
GEN hw/sparc64/trace.h
GEN hw/timer/trace.h
GEN hw/tpm/trace.h
GEN hw/usb/trace.h
GEN hw/vfio/trace.h
GEN hw/virtio/trace.h
GEN hw/watchdog/trace.h
GEN hw/xen/trace.h
GEN io/trace.h
GEN linux-user/trace.h
GEN migration/trace.h
GEN nbd/trace.h
GEN net/trace.h
GEN qapi/trace.h
GEN qom/trace.h
GEN scsi/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/mips/trace.h
GEN target/ppc/trace.h
GEN target/riscv/trace.h
GEN target/s390x/trace.h
GEN target/sparc/trace.h
GEN ui/trace.h
GEN util/trace.h
GEN trace-root.c
GEN accel/kvm/trace.c
GEN accel/tcg/trace.c
GEN audio/trace.c
GEN block/trace.c
GEN chardev/trace.c
GEN crypto/trace.c
GEN hw/9pfs/trace.c
GEN hw/acpi/trace.c
GEN hw/alpha/trace.c
GEN hw/arm/trace.c
GEN hw/audio/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/display/trace.c
GEN hw/dma/trace.c
GEN hw/hppa/trace.c
GEN hw/i2c/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/ide/trace.c
GEN hw/input/trace.c
GEN hw/intc/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/misc/trace.c
GEN hw/misc/macio/trace.c
GEN hw/net/trace.c
GEN hw/nvram/trace.c
GEN hw/pci/trace.c
GEN hw/pci-host/trace.c
GEN hw/ppc/trace.c
GEN hw/riscv/trace.c
GEN hw/rdma/trace.c
GEN hw/rdma/vmw/trace.c
GEN hw/s390x/trace.c
GEN hw/scsi/trace.c
GEN hw/sd/trace.c
GEN hw/sparc/trace.c
GEN hw/sparc64/trace.c
GEN hw/timer/trace.c
GEN hw/tpm/trace.c
GEN hw/usb/trace.c
GEN hw/vfio/trace.c
GEN hw/virtio/trace.c
GEN hw/watchdog/trace.c
GEN hw/xen/trace.c
GEN io/trace.c
GEN linux-user/trace.c
GEN migration/trace.c
GEN nbd/trace.c
GEN net/trace.c
GEN qapi/trace.c
GEN qom/trace.c
GEN scsi/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/mips/trace.c
GEN target/ppc/trace.c
GEN target/riscv/trace.c
GEN target/s390x/trace.c
GEN target/sparc/trace.c
GEN ui/trace.c
GEN util/trace.c
CHK version_gen.h
CC tests/qemu-iotests/socket_scm_helper.o
LINK tests/qemu-iotests/socket_scm_helper
GEN docs/version.texi
GEN qemu-options.texi
GEN qemu-monitor.texi
GEN qemu-img-cmds.texi
GEN qemu-monitor-info.texi
GEN qemu-doc.html
GEN qemu-doc.txt
GEN qemu.1
GEN qemu-img.1
GEN qemu-nbd.8
GEN qemu-ga.8
GEN docs/interop/qemu-qmp-ref.html
GEN docs/interop/qemu-qmp-ref.txt
GEN docs/interop/qemu-qmp-ref.7
GEN qga/qapi-generated/qapi-gen
GEN docs/interop/qemu-ga-ref.html
GEN docs/interop/qemu-ga-ref.txt
GEN docs/interop/qemu-ga-ref.7
GEN docs/qemu-block-drivers.7
GEN docs/qemu-cpu-models.7
CC qga/commands.o
CC qga/guest-agent-command-state.o
CC qga/main.o
CC qga/commands-posix.o
CC qga/channel-posix.o
CC qga/qapi-generated/qga-qapi-types.o
CC qga/qapi-generated/qga-qapi-visit.o
CC qga/qapi-generated/qga-qapi-commands.o
CC qapi/qapi-builtin-types.o
CC qapi/qapi-types.o
CC qapi/qapi-types-block-core.o
CC qapi/qapi-types-block.o
CC qapi/qapi-types-char.o
CC qapi/qapi-types-common.o
CC qapi/qapi-types-crypto.o
CC qapi/qapi-types-introspect.o
CC qapi/qapi-types-job.o
CC qapi/qapi-types-migration.o
CC qapi/qapi-types-misc.o
CC qapi/qapi-types-net.o
CC qapi/qapi-types-rocker.o
CC qapi/qapi-types-run-state.o
CC qapi/qapi-types-sockets.o
CC qapi/qapi-types-tpm.o
CC qapi/qapi-types-trace.o
CC qapi/qapi-types-transaction.o
CC qapi/qapi-types-ui.o
CC qapi/qapi-builtin-visit.o
CC qapi/qapi-visit.o
CC qapi/qapi-visit-block-core.o
CC qapi/qapi-visit-block.o
CC qapi/qapi-visit-char.o
CC qapi/qapi-visit-common.o
CC qapi/qapi-visit-crypto.o
CC qapi/qapi-visit-introspect.o
CC qapi/qapi-visit-job.o
CC qapi/qapi-visit-migration.o
CC qapi/qapi-visit-misc.o
CC qapi/qapi-visit-net.o
CC qapi/qapi-visit-rocker.o
CC qapi/qapi-visit-run-state.o
CC qapi/qapi-visit-sockets.o
CC qapi/qapi-visit-tpm.o
CC qapi/qapi-visit-trace.o
CC qapi/qapi-visit-transaction.o
CC qapi/qapi-visit-ui.o
CC qapi/qapi-events.o
CC qapi/qapi-events-block-core.o
CC qapi/qapi-events-block.o
CC qapi/qapi-events-char.o
CC qapi/qapi-events-common.o
CC qapi/qapi-events-crypto.o
CC qapi/qapi-events-introspect.o
CC qapi/qapi-events-job.o
CC qapi/qapi-events-migration.o
CC qapi/qapi-events-misc.o
CC qapi/qapi-events-net.o
CC qapi/qapi-events-rocker.o
CC qapi/qapi-events-run-state.o
CC qapi/qapi-events-sockets.o
CC qapi/qapi-events-tpm.o
CC qapi/qapi-events-trace.o
CC qapi/qapi-events-transaction.o
CC qapi/qapi-events-ui.o
CC qapi/qapi-introspect.o
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qobject-input-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qmp-event.o
CC qapi/qapi-util.o
CC qobject/qnull.o
CC qobject/qnum.o
CC qobject/qstring.o
CC qobject/qdict.o
CC qobject/qlist.o
CC qobject/qbool.o
CC qobject/qlit.o
CC qobject/qjson.o
CC qobject/qobject.o
CC qobject/json-lexer.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
CC qobject/block-qdict.o
CC trace/control.o
CC trace/qmp.o
CC util/osdep.o
CC util/cutils.o
CC util/unicode.o
CC util/qemu-timer-common.o
CC util/bufferiszero.o
CC util/lockcnt.o
CC util/aiocb.o
CC util/async.o
CC util/aio-wait.o
CC util/thread-pool.o
CC util/qemu-timer.o
CC util/main-loop.o
CC util/iohandler.o
CC util/aio-posix.o
CC util/compatfd.o
CC util/event_notifier-posix.o
CC util/mmap-alloc.o
CC util/oslib-posix.o
CC util/qemu-openpty.o
CC util/qemu-thread-posix.o
CC util/memfd.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/host-utils.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/fifo8.o
CC util/acl.o
CC util/cacheinfo.o
CC util/error.o
CC util/qemu-error.o
CC util/id.o
CC util/iov.o
CC util/qemu-config.o
CC util/qemu-sockets.o
CC util/uri.o
CC util/notify.o
CC util/qemu-option.o
CC util/qemu-progress.o
CC util/keyval.o
CC util/hexdump.o
CC util/crc32c.o
CC util/uuid.o
CC util/throttle.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-ucontext.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/pagesize.o
CC util/qdist.o
CC util/qht.o
CC util/qsp.o
CC util/range.o
CC util/stats64.o
CC util/systemd.o
CC util/iova-tree.o
CC util/vfio-helpers.o
CC trace-root.o
CC accel/kvm/trace.o
CC accel/tcg/trace.o
CC audio/trace.o
CC block/trace.o
CC chardev/trace.o
CC crypto/trace.o
CC hw/9pfs/trace.o
CC hw/acpi/trace.o
CC hw/alpha/trace.o
CC hw/arm/trace.o
CC hw/audio/trace.o
CC hw/block/trace.o
CC hw/block/dataplane/trace.o
CC hw/char/trace.o
CC hw/display/trace.o
CC hw/dma/trace.o
CC hw/hppa/trace.o
CC hw/i2c/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/ide/trace.o
CC hw/input/trace.o
CC hw/intc/trace.o
CC hw/isa/trace.o
CC hw/mem/trace.o
CC hw/misc/trace.o
CC hw/misc/macio/trace.o
CC hw/net/trace.o
CC hw/nvram/trace.o
CC hw/pci/trace.o
CC hw/pci-host/trace.o
CC hw/ppc/trace.o
CC hw/riscv/trace.o
CC hw/rdma/trace.o
CC hw/rdma/vmw/trace.o
CC hw/s390x/trace.o
CC hw/scsi/trace.o
CC hw/sd/trace.o
CC hw/sparc/trace.o
CC hw/sparc64/trace.o
CC hw/timer/trace.o
CC hw/tpm/trace.o
CC hw/usb/trace.o
CC hw/vfio/trace.o
CC hw/virtio/trace.o
CC hw/watchdog/trace.o
CC hw/xen/trace.o
CC io/trace.o
CC linux-user/trace.o
CC migration/trace.o
CC nbd/trace.o
CC net/trace.o
CC qapi/trace.o
CC qom/trace.o
CC scsi/trace.o
CC target/arm/trace.o
CC target/i386/trace.o
CC target/mips/trace.o
CC target/ppc/trace.o
CC target/riscv/trace.o
CC target/s390x/trace.o
CC target/sparc/trace.o
CC ui/trace.o
CC util/trace.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/get-vm-name.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/change-state-handler.o
CC stubs/monitor.o
CC stubs/notify-event.o
CC stubs/qtest.o
CC stubs/replay.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/tpm.o
CC stubs/trace-control.o
CC stubs/uuid.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/qmp_memory_device.o
CC stubs/target-monitor-defs.o
CC stubs/target-get-monitor-def.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/vmgenid.o
CC stubs/xen-common.o
CC stubs/xen-hvm.o
CC stubs/pci-host-piix.o
CC stubs/ram-block.o
CC stubs/ramfb.o
AR libqemuutil.a
LINK qemu-ga
CC contrib/ivshmem-client/ivshmem-client.o
CC contrib/ivshmem-client/main.o
LINK ivshmem-client
CC contrib/ivshmem-server/ivshmem-server.o
CC contrib/ivshmem-server/main.o
LINK ivshmem-server
CC qemu-nbd.o
CC block.o
CC blockjob.o
CC job.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw-format.o
CC block/vmdk.o
CC block/vpc.o
CC block/qcow.o
CC block/vdi.o
CC block/cloop.o
CC block/bochs.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qcow2-bitmap.o
CC block/qed.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
CC block/vhdx-endian.o
CC block/vhdx-log.o
CC block/quorum.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/blkreplay.o
CC block/parallels.o
CC block/blklogwrites.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/file-posix.o
CC block/null.o
CC block/mirror.o
CC block/commit.o
CC block/io.o
CC block/create.o
CC block/throttle-groups.o
CC block/nvme.o
CC block/nbd.o
CC block/nbd-client.o
CC block/sheepdog.o
CC block/accounting.o
CC block/dirty-bitmap.o
CC block/write-threshold.o
CC block/backup.o
CC block/replication.o
CC block/throttle.o
CC block/copy-on-read.o
CC block/crypto.o
CC nbd/server.o
CC nbd/client.o
CC nbd/common.o
CC scsi/utils.o
CC scsi/pr-manager.o
CC scsi/pr-manager-helper.o
CC crypto/init.o
CC crypto/hash.o
CC crypto/hash-glib.o
CC crypto/hmac.o
CC crypto/hmac-glib.o
CC crypto/aes.o
CC crypto/desrfb.o
CC crypto/cipher.o
CC crypto/tlscreds.o
CC crypto/tlscredsanon.o
CC crypto/tlscredspsk.o
CC crypto/tlscredsx509.o
CC crypto/tlssession.o
CC crypto/secret.o
CC crypto/random-platform.o
CC crypto/pbkdf.o
CC crypto/ivgen.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen-plain.o
CC crypto/ivgen-plain64.o
CC crypto/afsplit.o
CC crypto/xts.o
CC crypto/block.o
CC crypto/block-qcow.o
CC crypto/block-luks.o
CC io/channel.o
CC io/channel-buffer.o
CC io/channel-command.o
CC io/channel-file.o
CC io/channel-socket.o
CC io/channel-tls.o
CC io/channel-watch.o
CC io/channel-websock.o
CC io/channel-util.o
CC io/dns-resolver.o
CC io/net-listener.o
CC io/task.o
CC qom/object.o
CC qom/container.o
CC qom/qom-qobject.o
CC qom/object_interfaces.o
LINK qemu-nbd
GEN qemu-img-cmds.h
CC qemu-img.o
LINK qemu-img
CC qemu-io.o
LINK qemu-io
CC qemu-edid.o
CC hw/display/edid-generate.o
LINK qemu-edid
CC scsi/qemu-pr-helper.o
LINK scsi/qemu-pr-helper
CC qemu-bridge-helper.o
LINK qemu-bridge-helper
CC blockdev.o
CC blockdev-nbd.o
CC bootdevice.o
CC iothread.o
CC job-qmp.o
CC qdev-monitor.o
CC device-hotplug.o
CC os-posix.o
CC bt-host.o
CC bt-vhci.o
CC dma-helpers.o
CC vl.o
CC tpm.o
CC device_tree.o
CC qapi/qapi-commands.o
CC qapi/qapi-commands-block-core.o
CC qapi/qapi-commands-block.o
CC qapi/qapi-commands-char.o
CC qapi/qapi-commands-common.o
CC qapi/qapi-commands-crypto.o
CC qapi/qapi-commands-introspect.o
CC qapi/qapi-commands-job.o
CC qapi/qapi-commands-migration.o
CC qapi/qapi-commands-misc.o
CC qapi/qapi-commands-net.o
CC qapi/qapi-commands-rocker.o
CC qapi/qapi-commands-run-state.o
CC qapi/qapi-commands-sockets.o
CC qapi/qapi-commands-tpm.o
CC qapi/qapi-commands-trace.o
CC qapi/qapi-commands-transaction.o
CC qapi/qapi-commands-ui.o
CC qmp.o
CC hmp.o
CC cpus-common.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/rng-random.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/hostmem-file.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC backends/cryptodev-vhost.o
CC backends/cryptodev-vhost-user.o
CC backends/hostmem-memfd.o
CC block/stream.o
CC chardev/msmouse.o
CC chardev/wctablet.o
CC chardev/testdev.o
CC disas/i386.o
CC disas/riscv.o
CC fsdev/qemu-fsdev-dummy.o
CC fsdev/qemu-fsdev-opts.o
CC fsdev/qemu-fsdev-throttle.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/soundhw.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/bt/core.o
CC hw/bt/l2cap.o
CC hw/bt/sdp.o
CC hw/bt/hci.o
CC hw/bt/hid.o
CC hw/bt/hci-csr.o
CC hw/char/serial.o
CC hw/char/virtio-console.o
CC hw/char/cadence_uart.o
CC hw/core/qdev.o
CC hw/core/qdev-properties.o
CC hw/core/bus.o
CC hw/core/reset.o
CC hw/core/qdev-fw.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/nmi.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/or-irq.o
CC hw/core/split-irq.o
CC hw/core/generic-loader.o
CC hw/core/null-machine.o
CC hw/cpu/core.o
CC hw/input/hid.o
CC hw/input/ps2.o
CC hw/input/virtio-input.o
CC hw/input/virtio-input-hid.o
CC hw/input/virtio-input-host.o
CC hw/intc/intc.o
CC hw/misc/unimp.o
CC hw/net/cadence_gem.o
CC hw/nvram/eeprom93xx.o
CC hw/nvram/fw_cfg.o
CC hw/nvram/chrp_nvram.o
CC hw/pci/pci-stub.o
CC hw/pcmcia/pcmcia.o
CC hw/scsi/scsi-disk.o
CC hw/scsi/emulation.o
CC hw/scsi/scsi-generic.o
CC hw/scsi/scsi-bus.o
CC hw/smbios/smbios-stub.o
CC hw/smbios/smbios_type_38-stub.o
CC hw/timer/cadence_ttc.o
CC hw/tpm/tpm_util.o
CC hw/tpm/tpm_passthrough.o
CC hw/tpm/tpm_emulator.o
CC hw/usb/core.o
CC hw/usb/combined-packet.o
CC hw/usb/bus.o
CC hw/usb/libhw.o
CC hw/usb/host-stub.o
CC hw/virtio/virtio-bus.o
CC hw/virtio/virtio-rng.o
CC hw/virtio/virtio-mmio.o
CC hw/virtio/vhost-stub.o
CC hw/watchdog/watchdog.o
CC migration/migration.o
CC migration/socket.o
CC migration/fd.o
CC migration/exec.o
CC migration/tls.o
CC migration/channel.o
CC migration/savevm.o
CC migration/colo.o
CC migration/colo-failover.o
CC migration/vmstate.o
CC migration/vmstate-types.o
CC migration/page_cache.o
CC migration/qemu-file.o
CC migration/global_state.o
CC migration/qemu-file-channel.o
CC migration/xbzrle.o
CC migration/postcopy-ram.o
CC migration/qjson.o
CC migration/block-dirty-bitmap.o
CC migration/block.o
CC net/net.o
CC net/queue.o
CC net/checksum.o
CC net/util.o
CC net/hub.o
CC net/socket.o
CC net/dump.o
CC net/eth.o
CC net/l2tpv3.o
CC net/vhost-user.o
CC net/slirp.o
CC net/filter.o
CC net/filter-buffer.o
CC net/filter-mirror.o
CC net/colo-compare.o
CC net/colo.o
CC net/filter-rewriter.o
CC net/filter-replay.o
CC net/tap.o
CC net/tap-linux.o
CC qom/cpu.o
CC replay/replay.o
CC replay/replay-internal.o
CC replay/replay-events.o
CC replay/replay-time.o
CC replay/replay-input.o
CC replay/replay-char.o
CC replay/replay-snapshot.o
CC replay/replay-net.o
CC replay/replay-audio.o
CC slirp/cksum.o
CC slirp/if.o
CC slirp/ip_icmp.o
CC slirp/ip6_icmp.o
CC slirp/ip6_input.o
CC slirp/ip6_output.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/dnssearch.o
CC slirp/dhcpv6.o
CC slirp/slirp.o
CC slirp/mbuf.o
CC slirp/misc.o
CC slirp/sbuf.o
CC slirp/socket.o
CC slirp/tcp_input.o
CC slirp/tcp_output.o
CC slirp/tcp_subr.o
CC slirp/tcp_timer.o
CC slirp/udp.o
CC slirp/udp6.o
CC slirp/bootp.o
CC slirp/tftp.o
CC slirp/arp_table.o
CC slirp/ndp_table.o
CC slirp/ncsi.o
CC ui/keymaps.o
CC ui/console.o
CC ui/cursor.o
CC ui/qemu-pixman.o
CC ui/input.o
CC ui/input-keymap.o
CC ui/input-legacy.o
CC ui/input-linux.o
CC ui/vnc.o
CC ui/vnc-enc-zlib.o
CC ui/vnc-enc-hextile.o
CC ui/vnc-enc-tight.o
CC ui/vnc-palette.o
CC ui/vnc-enc-zrle.o
CC ui/vnc-auth-vencrypt.o
CC ui/vnc-ws.o
CC ui/vnc-jobs.o
CC audio/ossaudio.o
CC chardev/char.o
CC chardev/char-fd.o
CC chardev/char-fe.o
CC chardev/char-file.o
CC chardev/char-io.o
CC chardev/char-mux.o
CC chardev/char-null.o
CC chardev/char-parallel.o
CC chardev/char-pipe.o
CC chardev/char-pty.o
CC chardev/char-ringbuf.o
CC chardev/char-serial.o
CC chardev/char-socket.o
CC chardev/char-stdio.o
CC chardev/char-udp.o
GEN riscv64-softmmu/hmp-commands.h
GEN riscv64-softmmu/hmp-commands-info.h
GEN riscv64-softmmu/config-target.h
CC riscv64-softmmu/exec.o
CC riscv64-softmmu/tcg/tcg.o
CC riscv64-softmmu/tcg/tcg-op.o
CC riscv64-softmmu/tcg/tcg-op-vec.o
CC riscv64-softmmu/tcg/tcg-op-gvec.o
CC riscv64-softmmu/tcg/tcg-common.o
CC riscv64-softmmu/tcg/optimize.o
CC riscv64-softmmu/fpu/softfloat.o
CC riscv64-softmmu/disas.o
GEN riscv64-softmmu/gdbstub-xml.c
CC riscv64-softmmu/gdbstub-xml.o
CC riscv64-softmmu/arch_init.o
CC riscv64-softmmu/cpus.o
CC riscv64-softmmu/monitor.o
CC riscv64-softmmu/gdbstub.o
CC riscv64-softmmu/balloon.o
CC riscv64-softmmu/ioport.o
CC riscv64-softmmu/numa.o
CC riscv64-softmmu/qtest.o
CC riscv64-softmmu/memory.o
CC riscv64-softmmu/memory_mapping.o
CC riscv64-softmmu/dump.o
CC riscv64-softmmu/migration/ram.o
CC riscv64-softmmu/accel/accel.o
CC riscv64-softmmu/accel/stubs/hax-stub.o
CC riscv64-softmmu/accel/stubs/hvf-stub.o
CC riscv64-softmmu/accel/stubs/whpx-stub.o
CC riscv64-softmmu/accel/stubs/kvm-stub.o
CC riscv64-softmmu/accel/tcg/tcg-all.o
CC riscv64-softmmu/accel/tcg/cputlb.o
CC riscv64-softmmu/accel/tcg/tcg-runtime.o
CC riscv64-softmmu/accel/tcg/tcg-runtime-gvec.o
CC riscv64-softmmu/accel/tcg/cpu-exec.o
CC riscv64-softmmu/accel/tcg/cpu-exec-common.o
CC riscv64-softmmu/accel/tcg/translate-all.o
CC riscv64-softmmu/accel/tcg/translator.o
CC riscv64-softmmu/hw/block/virtio-blk.o
CC riscv64-softmmu/hw/block/vhost-user-blk.o
CC riscv64-softmmu/hw/block/dataplane/virtio-blk.o
CC riscv64-softmmu/hw/char/virtio-serial-bus.o
CC riscv64-softmmu/hw/display/virtio-gpu.o
CC riscv64-softmmu/hw/display/virtio-gpu-3d.o
CC riscv64-softmmu/hw/net/virtio-net.o
CC riscv64-softmmu/hw/net/vhost_net.o
CC riscv64-softmmu/hw/net/rocker/qmp-norocker.o
CC riscv64-softmmu/hw/scsi/virtio-scsi.o
CC riscv64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC riscv64-softmmu/hw/scsi/vhost-scsi-common.o
CC riscv64-softmmu/hw/scsi/vhost-scsi.o
CC riscv64-softmmu/hw/scsi/vhost-user-scsi.o
CC riscv64-softmmu/hw/vfio/common.o
CC riscv64-softmmu/hw/vfio/platform.o
CC riscv64-softmmu/hw/vfio/spapr.o
CC riscv64-softmmu/hw/virtio/virtio.o
CC riscv64-softmmu/hw/virtio/virtio-balloon.o
CC riscv64-softmmu/hw/virtio/virtio-crypto.o
CC riscv64-softmmu/hw/virtio/vhost.o
CC riscv64-softmmu/hw/virtio/vhost-backend.o
CC riscv64-softmmu/hw/virtio/vhost-user.o
CC riscv64-softmmu/hw/virtio/vhost-vsock.o
CC riscv64-softmmu/hw/riscv/boot.o
CC riscv64-softmmu/hw/riscv/riscv_htif.o
CC riscv64-softmmu/hw/riscv/riscv_hart.o
CC riscv64-softmmu/hw/riscv/sifive_e.o
CC riscv64-softmmu/hw/riscv/sifive_clic.o
CC riscv64-softmmu/hw/riscv/sifive_clint.o
CC riscv64-softmmu/hw/riscv/sifive_prci.o
CC riscv64-softmmu/hw/riscv/sifive_plic.o
CC riscv64-softmmu/hw/riscv/sifive_test.o
CC riscv64-softmmu/hw/riscv/sifive_u.o
CC riscv64-softmmu/hw/riscv/sifive_uart.o
CC riscv64-softmmu/hw/riscv/spike.o
CC riscv64-softmmu/hw/riscv/virt.o
CC riscv64-softmmu/target/riscv/translate.o
CC riscv64-softmmu/target/riscv/op_helper.o
CC riscv64-softmmu/target/riscv/cpu_helper.o
CC riscv64-softmmu/target/riscv/cpu.o
CC riscv64-softmmu/target/riscv/csr.o
CC riscv64-softmmu/target/riscv/fpu_helper.o
CC riscv64-softmmu/target/riscv/gdbstub.o
CC riscv64-softmmu/target/riscv/pmp.o
GEN trace/generated-helpers.c
CC riscv64-softmmu/trace/generated-helpers.o
CC riscv64-softmmu/trace/control-target.o
LINK riscv64-softmmu/qemu-system-riscv64
GEN riscv32-softmmu/hmp-commands.h
GEN riscv32-softmmu/hmp-commands-info.h
GEN riscv32-softmmu/config-target.h
CC riscv32-softmmu/exec.o
CC riscv32-softmmu/tcg/tcg.o
CC riscv32-softmmu/tcg/tcg-op.o
CC riscv32-softmmu/tcg/tcg-op-vec.o
CC riscv32-softmmu/tcg/tcg-op-gvec.o
CC riscv32-softmmu/tcg/tcg-common.o
CC riscv32-softmmu/tcg/optimize.o
CC riscv32-softmmu/fpu/softfloat.o
CC riscv32-softmmu/disas.o
GEN riscv32-softmmu/gdbstub-xml.c
CC riscv32-softmmu/gdbstub-xml.o
CC riscv32-softmmu/arch_init.o
CC riscv32-softmmu/cpus.o
CC riscv32-softmmu/monitor.o
CC riscv32-softmmu/gdbstub.o
CC riscv32-softmmu/balloon.o
CC riscv32-softmmu/ioport.o
CC riscv32-softmmu/numa.o
CC riscv32-softmmu/qtest.o
CC riscv32-softmmu/memory.o
CC riscv32-softmmu/memory_mapping.o
CC riscv32-softmmu/dump.o
CC riscv32-softmmu/migration/ram.o
CC riscv32-softmmu/accel/accel.o
CC riscv32-softmmu/accel/stubs/hax-stub.o
CC riscv32-softmmu/accel/stubs/hvf-stub.o
CC riscv32-softmmu/accel/stubs/whpx-stub.o
CC riscv32-softmmu/accel/stubs/kvm-stub.o
CC riscv32-softmmu/accel/tcg/tcg-all.o
CC riscv32-softmmu/accel/tcg/cputlb.o
CC riscv32-softmmu/accel/tcg/tcg-runtime.o
CC riscv32-softmmu/accel/tcg/tcg-runtime-gvec.o
CC riscv32-softmmu/accel/tcg/cpu-exec.o
CC riscv32-softmmu/accel/tcg/cpu-exec-common.o
CC riscv32-softmmu/accel/tcg/translate-all.o
CC riscv32-softmmu/accel/tcg/translator.o
CC riscv32-softmmu/hw/block/virtio-blk.o
CC riscv32-softmmu/hw/block/vhost-user-blk.o
CC riscv32-softmmu/hw/block/dataplane/virtio-blk.o
CC riscv32-softmmu/hw/char/virtio-serial-bus.o
CC riscv32-softmmu/hw/display/virtio-gpu.o
CC riscv32-softmmu/hw/display/virtio-gpu-3d.o
CC riscv32-softmmu/hw/net/virtio-net.o
CC riscv32-softmmu/hw/net/vhost_net.o
CC riscv32-softmmu/hw/net/rocker/qmp-norocker.o
CC riscv32-softmmu/hw/scsi/virtio-scsi.o
CC riscv32-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC riscv32-softmmu/hw/scsi/vhost-scsi-common.o
CC riscv32-softmmu/hw/scsi/vhost-scsi.o
CC riscv32-softmmu/hw/scsi/vhost-user-scsi.o
CC riscv32-softmmu/hw/vfio/common.o
CC riscv32-softmmu/hw/vfio/platform.o
CC riscv32-softmmu/hw/vfio/spapr.o
CC riscv32-softmmu/hw/virtio/virtio.o
CC riscv32-softmmu/hw/virtio/virtio-balloon.o
CC riscv32-softmmu/hw/virtio/virtio-crypto.o
CC riscv32-softmmu/hw/virtio/vhost.o
CC riscv32-softmmu/hw/virtio/vhost-backend.o
CC riscv32-softmmu/hw/virtio/vhost-user.o
CC riscv32-softmmu/hw/virtio/vhost-vsock.o
CC riscv32-softmmu/hw/riscv/boot.o
CC riscv32-softmmu/hw/riscv/riscv_htif.o
CC riscv32-softmmu/hw/riscv/riscv_hart.o
CC riscv32-softmmu/hw/riscv/sifive_e.o
CC riscv32-softmmu/hw/riscv/sifive_clic.o
CC riscv32-softmmu/hw/riscv/sifive_clint.o
CC riscv32-softmmu/hw/riscv/sifive_prci.o
CC riscv32-softmmu/hw/riscv/sifive_plic.o
CC riscv32-softmmu/hw/riscv/sifive_test.o
CC riscv32-softmmu/hw/riscv/sifive_u.o
CC riscv32-softmmu/hw/riscv/sifive_uart.o
CC riscv32-softmmu/hw/riscv/spike.o
CC riscv32-softmmu/hw/riscv/virt.o
CC riscv32-softmmu/target/riscv/translate.o
CC riscv32-softmmu/target/riscv/op_helper.o
CC riscv32-softmmu/target/riscv/cpu_helper.o
CC riscv32-softmmu/target/riscv/cpu.o
CC riscv32-softmmu/target/riscv/csr.o
CC riscv32-softmmu/target/riscv/fpu_helper.o
CC riscv32-softmmu/target/riscv/gdbstub.o
CC riscv32-softmmu/target/riscv/pmp.o
GEN trace/generated-helpers.c
CC riscv32-softmmu/trace/generated-helpers.o
CC riscv32-softmmu/trace/control-target.o
LINK riscv32-softmmu/qemu-system-riscv32
AS optionrom/multiboot.o
BUILD optionrom/multiboot.img
BUILD optionrom/multiboot.raw
SIGN optionrom/multiboot.bin
AS optionrom/linuxboot.o
BUILD optionrom/linuxboot.img
BUILD optionrom/linuxboot.raw
SIGN optionrom/linuxboot.bin
CC optionrom/linuxboot_dma.o
BUILD optionrom/linuxboot_dma.img
BUILD optionrom/linuxboot_dma.raw
SIGN optionrom/linuxboot_dma.bin
AS optionrom/kvmvapic.o
BUILD optionrom/kvmvapic.img
BUILD optionrom/kvmvapic.raw
SIGN optionrom/kvmvapic.bin
make[1]: Leaving directory '/home/nisiyama/Keystone/keystone/riscv-qemu'
cd bootrom; make; cd ..
make[1]: Entering directory '/home/nisiyama/Keystone/keystone/bootrom'
riscv64-unknown-elf-gcc -march=rv64imafdc -mcmodel=medany -mabi=lp64 -nostdlib -nostartfiles -fno-common -std=gnu11 -static -fPIC -O2 -Wall -I./ -L . -T bootloader.lds -o bootrom.elf ./bootloader.S ./bootloader.c ./ed25519/*.c ./sha3/*.c
./bootloader.c: In function 'random_byte':
./bootloader.c:44:2: warning: #warning Bootloader does not have entropy source, keys are for TESTING ONLY [-Wcpp]
#warning Bootloader does not have entropy source, keys are for TESTING ONLY
^~~~~~~
In file included from ./use_test_keys.h:1:0,
from ./bootloader.c:76:
./test_dev_key.h: In function 'bootloader':
./test_dev_key.h:3:2: warning: #warning Using TEST device root key. No integrity guarantee. [-Wcpp]
#warning Using TEST device root key. No integrity guarantee.
^~~~~~~
make[1]: Leaving directory '/home/nisiyama/Keystone/keystone/bootrom'
make -f hifive.mk
make[1]: Entering directory '/home/nisiyama/Keystone/keystone'
mkdir -p /home/nisiyama/Keystone/keystone/hifive-work/hifive-linux/
cp -p /home/nisiyama/Keystone/keystone/hifive-conf/linux_cma_conf /home/nisiyama/Keystone/keystone/hifive-work/hifive-linux/.config
make -C /home/nisiyama/Keystone/keystone/riscv-linux O=/home/nisiyama/Keystone/keystone/hifive-work/hifive-linux ARCH=riscv olddefconfig
make[2]: Entering directory '/home/nisiyama/Keystone/keystone/riscv-linux'
make[3]: Entering directory '/home/nisiyama/Keystone/keystone/hifive-work/hifive-linux'
HOSTCC scripts/basic/fixdep
GEN ./Makefile
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf --olddefconfig Kconfig
#
# configuration written to .config
#
make[3]: Leaving directory '/home/nisiyama/Keystone/keystone/hifive-work/hifive-linux'
make[2]: Leaving directory '/home/nisiyama/Keystone/keystone/riscv-linux'
echo rv64imafdc
rv64imafdc
echo
rm -rf /home/nisiyama/Keystone/keystone/hifive-work/buildroot_initramfs/
mkdir -p /home/nisiyama/Keystone/keystone/hifive-work/buildroot_initramfs/
cp /home/nisiyama/Keystone/keystone/hifive-conf/buildroot_initramfs_config /home/nisiyama/Keystone/keystone/hifive-work/buildroot_initramfs/.config
make -s -C /home/nisiyama/Keystone/keystone/buildroot RISCV=/home/nisiyama/Keystone/keystone/riscv PATH=/home/nisiyama/Keystone/keystone/riscv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program Files/WindowsApps/CanonicalGroupLimited.UbuntuonWindows_1804.2019.521.0_x64__79rhkp1fndgsc:/mnt/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/bin:/mnt/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/libnvvp:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:/mnt/c/Program Files/nodejs:/mnt/c/Program Files/Git/cmd:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/mnt/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:/mnt/c/Users/Nisiy/AppData/Local/Programs/Python/Python37/Scripts:/mnt/c/Users/Nisiy/AppData/Local/Programs/Python/Python37:/mnt/c/Users/Nisiy/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/Nisiy/AppData/Local/atom/bin:/mnt/c/MinGW/bin:/mnt/c/texlive/2018/bin/win32:/mnt/c/Users/Nisiy/AppData/Roaming/npm:/mnt/c/Program Files/Java/jdk-12.0.1/bin:/mnt/d/apache-ant-1.10.5/bin:/mnt/c/Users/Nisiy/AppData/Local/Microsoft/WindowsApps:/snap/bin:/home/nisiyama/Keystone/keystone/riscv/bin O=/home/nisiyama/Keystone/keystone/hifive-work/buildroot_initramfs olddefconfig CROSS_COMPILE=riscv64-unknown-linux-gnu-
/bin/sh: 1: Syntax error: "(" unexpected
hifive.mk:69: recipe for target '/home/nisiyama/Keystone/keystone/hifive-work/buildroot_initramfs/.config' failed
make[1]: *** [/home/nisiyama/Keystone/keystone/hifive-work/buildroot_initramfs/.config] Error 2
make[1]: Leaving directory '/home/nisiyama/Keystone/keystone'
Makefile:19: recipe for target 'hifive' failed
make: *** [hifive] Error 2
Whenever the driver fails to allocate enclave memory, it falls back and destroys the enclave.
Somehow, the QEMU dies with this assertion failure
ERROR:/home/ubuntu/keystone/riscv-qemu/cpus.c:1848:qemu_mutex_lock_iothread_impl: assertion failed: (!qemu_mutex_iothread_locked())
This is not reproducible in HiFive Unleashed, which implies that there could be a bug in QEMU.
We're not going to handle this at this moment, because probably it is not Keystone.
The SDK currently calculates the number of pages that the enclave will consume.
We calculate this number based off the total memory size of the ELFs.
Also, we need to add the number of pages that will be used for the page tables that the enclave might need for the attestation.
We naively allocate 15 pages (which is more than sufficient for hundreds-of-megabyte enclave), but this is not the right way to handle this.
We need to package the build process of keystone-demo so that people can run one or two scripts to run demo in QEMU.
p.s. I found that you can refer to this issue in the commit by "#" and if you say "resolves #", the issue is automatically closed when the commit is merged! smart GitHub
Keystone device driver is unnecessarily built in the riscv-linux,
partly because external module just didn't work in previous kernel versions.
Need to test it again and make it an external module if it works.
Currently the only way to do this is via:
copying keystone-demo bins into sdk/bin and running hifive make, or by copying them into hifive-work/buildroot_initramfs/target/root/
and then running hifive make
(Credit to @dkohlbre for this current solution)
Though an inclusion of this in a make file would make it easier for developers.
There was a known bug where the enclave occupies the entire system during execution.
In single-core systems, this entirely hangs the machine during enclave execution.
In multi-core systems, this slows down the system and generates following kernel logs:
[ 81.686879] INFO: rcu_sched detected stalls on CPUs/tasks:
[ 81.687666] (detected by 0, t=8407 jiffies, g=617, c=616, q=3)
[ 81.688544] All QSes seen, last rcu_sched kthread activity 8407 (4294952409-4294944002), jiffies_till_next_fqs=1, root ->qsmask 0x0
[ 81.690161] test-runner.ris R running task 0 117 112 0x00000008
[ 81.691198] Call Trace:
[ 81.691652] [< (ptrval)>] walk_stackframe+0x0/0xa2
[ 81.692465] [< (ptrval)>] show_stack+0x26/0x34
[ 81.693236] [< (ptrval)>] sched_show_task+0xa6/0xfc
[ 81.694069] [< (ptrval)>] rcu_check_callbacks+0x662/0x668
[ 81.694955] [< (ptrval)>] update_process_times+0x1e/0x48
[ 81.695837] [< (ptrval)>] tick_periodic+0x40/0xac
[ 81.696645] [< (ptrval)>] tick_handle_periodic+0x1a/0x5c
[ 81.697539] [< (ptrval)>] riscv_timer_interrupt+0x26/0x32
[ 81.698428] [< (ptrval)>] riscv_intc_irq+0xb4/0xf2
[ 81.699243] [< (ptrval)>] ret_from_syscall+0xa/0xe
It turns out that there were a bug in Eyrie runtime and a design flaw of the driver.
(1) Eyrie bug: Eyrie does not enable the timer interrupt when it executes the enclave, which makes it never yield the core until it finishes.
(2) Driver issue: Even if the enclave has been interrupted, the kernel does not schedule in the interrupt handler; the driver just immediately resumes the enclave. This was like the driver dedicates the core to the enclave, not yielding until the ioctl returns.
This caused #112
Fundamentally though, this is more about the issues #75 and #46.
We might need to include DoS protection and watchdog features in the next release.
When the host dies (e.g., due to ctrl+C), the driver must destroy the enclave and clean up the resource.
There are bugs in the SM/driver which make an orphan enclave remain undestroyed after keystone_release
.
Firesim-riscv-tools-prebuilt was damaged when I unzipped it.
Thank you!
whch@whch:~/keystone$ make
mkdir -p buildroot/dl
make -f hifive.mk
make[1]: Entering directory '/home/whch/keystone'
make -s -C /home/whch/keystone/buildroot RISCV=/home/whch/keystone/riscv-gnu-toolchain/riscv PATH=/home/whch/keystone/riscv-gnu-toolchain/riscv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/whch/keystone/riscv-gnu-toolchain/riscv/bin O=/home/whch/keystone/hifive-work/buildroot_initramfs
make[2]: Entering directory '/home/whch/keystone/buildroot'
ncurses 6.1 Configuring
configure: error: C compiler cannot create executables
make[2]: *** [package/pkg-generic.mk:231: /home/whch/keystone/hifive-work/buildroot_initramfs/build/ncurses-6.1/.stamp_configured] Error 77
make[2]: Leaving directory '/home/whch/keystone/buildroot'
make[1]: *** [hifive.mk:62: /home/whch/keystone/hifive-work/buildroot_initramfs/images/rootfs.tar] Error 2
make[1]: Leaving directory '/home/whch/keystone'
make: *** [Makefile:18: hifive] Error 2
Thank you for answer,may be it's not a bug.
Currently, enclaves have the ability to simply never exit while running.
We want the following behavior:
A scheduling (timer) interrupt from the OS may arrive to the runtime.
The runtime is expected to save state and context switch out.
The sm is expected to enforce a timeout on this context switch, and kill the enclave if it does not save and exit expediently.
This will require (at least):
If the host process dies, there's no reliable way to kill the enclaves owned by the process.
The OS should keep track of orphan enclaves and clean them up.
SM region is accessible even there is the first PMP entry holding a right NAPOT-decoded address range covering the entire SM.
I suspect QEMU because this didn't happen before bumping QEMU to the latest version.
But the security monitor could be wrong, so we need more inspection.
firesim-riscv-tools-prebuilt-2.0/distrib.tar.partbn
firesim-riscv-tools-prebuilt-2.0/distrib.tar.partbo
firesim-riscv-tools-prebuilt-2.0/distrib.tar.partbp
firesim-riscv-tools-prebuilt-2.0/distrib.tar.partbq
gzip: stdin: unexpected end of file
tar: 归档文件中异常的 EOF
tar: 归档文件中异常的 EOF
tar: Error is not recoverable: exiting now
./fast-setup.sh: 行 33: ./installrelease.sh: 没有那个文件或目录
mv: 无法获取'distrib' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'riscv' 的文件状态(stat): 没有那个文件或目录
Toolchain has been installed in /home/whch/keystone/riscv
I was having trouble building the dev branch on Ubuntu 18.04. It seems like the problem is that Ubuntu 18.04 uses OpenSSL version 1.1.0 and this version of OpenSSL has removed some functions from their API, which causes the compilation of riscv-linux/scripts/extract-cert.c to fail.
The fix is pretty straightforward, a couple of initialization calls need to removed for OpenSSL version 1.1.0. (I got this information from the OpenSSL wiki: https://wiki.openssl.org/index.php/Library_Initialization.)
Here is the patch. I didn't submit a pull request because I wasn't sure where to submit it as riscv/riscv-linux is no longer maintained.
diff --git a/scripts/extract-cert.c b/scripts/extract-cert.c
index b071bf476fea..407ba4ad6352 100644
--- a/scripts/extract-cert.c
+++ b/scripts/extract-cert.c
@@ -91,8 +91,10 @@ int main(int argc, char **argv)
{
char *cert_src;
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
OpenSSL_add_all_algorithms();
ERR_load_crypto_strings();
+#endif
ERR_clear_error();
kbuild_verbose = atoi(getenv("KBUILD_VERBOSE")?:"0");
I thought I'd create an issue so that you guys can either apply the patch or document the issue somewhere.
Currently, enclave initialization is mostly done by the Linux driver by create_enclave
IOCTL.
We need to move ELF loading code into SDK for several reasons.
(1) Enclave must be measurable without the driver.
(2) ELF loading must be extensible, thus the driver is not a good place to live.
Please refer to this issue when you create a PR.
See following issue: keystone-enclave/keyedge#2
Need to complete the documentation
We need to stop adding features and try stabilize all of the components at some point.
I'm filing this issue to just remind myself in the future,
let's start this on May because we don't have enough time atm.
git-clone of the tools is too slow, we should directly download the tarball
The SM currently have no DoS protection against enclaves.
This means that the enclave can break or hang the system by turning into an invalid status.
For example, the runtime can set invalid sepc, which will cause M-mode seg faults.
The runtime can also send some IPIs to other cores (e.g., TLB flush, etc).
This sounds scary, but in fact, a fix is pretty straightforward: the SM can just identify the source of each trap, and if it's from enclave, soft-exit it if SM cannot handle the trap.
"traps" also include SBI calls (mcall
), which makes it very relevant to the following issue:
keystone-enclave/riscv-pk#25
I don't have much time for this right now, but this has pretty high priority regarding security.
https://asylo.dev/ & https://openenclave.io/sdk/
Google and Microsoft both created Secure Enclave SDKs, initially targeting Intel SGX. Is it possible (and are there plans) to create some sort of interoperability between these projects or upstream support into them?
Cheers.
I clone the source, and do "git submodule init", "git submodule update" :
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
Since keystone uses QEMU, it actually runs on any platform.
Need to test build in OS X and pack build scripts
The entire context (including S-mode CSRs) needs to be swapped (use stop_enclave SBI).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.