diodesign / diosix

A lightweight, secure, multiprocessor bare-metal hypervisor written in Rust for RISC-V
https://diosix.org/
MIT License
191 stars 12 forks source link

Diosix fails to build #17

Open Steinegger opened 3 years ago

Steinegger commented 3 years ago

The latest commit (406502c) of diosix fails to build when invoking just. I was doing a clean clone of the repo using git clone --recurse-submodules https://github.com/diodesign/diosix.git and invoked just quiet=no

Output:

% just quiet=no
--> Building debug-grade Diosix for riscv64gc-unknown-none-elf systems
--> Ensuring Rust can build for riscv64gc-unknown-none-elf
info: component 'rust-std' for target 'riscv64gc-unknown-none-elf' is up to date
--> Building system services
    Updating crates.io index
   Compiling memchr v2.3.4
   Compiling regex-syntax v0.6.23
   Compiling proc-macro2 v1.0.24
   Compiling semver-parser v0.7.0
   Compiling spin v0.5.2
   Compiling unicode-xid v0.2.1
   Compiling serde v1.0.124
   Compiling syn v1.0.64
   Compiling serde_derive v1.0.124
   Compiling scopeguard v1.1.0
   Compiling bit_field v0.10.1
   Compiling spin v0.7.1
   Compiling lazy_static v1.4.0
   Compiling semver v0.9.0
   Compiling lock_api v0.3.4
   Compiling spinning_top v0.1.1
   Compiling rustc_version v0.2.3
   Compiling linked_list_allocator v0.8.11
   Compiling aho-corasick v0.7.15
   Compiling bare-metal v0.2.5
   Compiling quote v1.0.9
   Compiling regex v1.4.5
   Compiling riscv-target v0.1.2
   Compiling toml v0.5.8
   Compiling riscv v0.6.0
   Compiling supervisor v0.0.1 (/home/ubuntu/temp/diosix/src/services/src/supervisor-riscv)
   Compiling diosix-services v1.0.0 (/home/ubuntu/temp/diosix/src/services)
error: linking with `riscv64-linux-gnu-ld` failed: exit code: 1
  |
  = note: "riscv64-linux-gnu-ld" "-nostartfiles" "-L" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-none-elf/lib" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.100v2shtrliots8x.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.12ep3mmhc6dj5fnh.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.1avnfmvj30bt9bku.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.1bb27rzb4a0dfjp2.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.1d8zw0v1diyyjlag.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.1hhiwjtrfa3ucwuo.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.1nu8yvfoe1gwv02c.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.1oddxpnzhkl1xipe.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.1sohgf12z483xcw5.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.1spkmqg05nky0f9i.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.1vxp2b02839sflx5.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.1vy6khjzh3svzx2m.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.1zfxxyr4208zife2.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.21q7g64wpr8pxeap.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.24efxi6jj5odfvjz.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.264zviuew05893f4.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.2ajh04rlnq9tpm6e.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.2g9c0dc8lspz6kav.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.2rkvgh4u07qpc9d7.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.2ztugj8zdrol9wuf.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.30zimewwnct8wry2.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.37pygl7xuvemngne.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.3c7ti2fqrmzpy3zb.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.3k288lv6dmis101p.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.3mgtpzrnwonigf3y.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.3o0zoi09ck27rrse.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.3peyayssqbx09dmb.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.3plxgcfmvagvcyrn.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.3tunfpfno03i64hf.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.3utn88mh79ibnm2x.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.3ys0n2cx211kh3r9.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.45hnsdddh4nep6b.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.45zvssyqboww946r.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.496ebu93c6vu72mc.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4arbxjd4e2z3rq1o.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4beo3xm3y2cw7ww3.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4c02gg3mr4eh8nea.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4c6b5j97y6lfp6er.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4easln8t7o8ovyuc.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4ehrr1ur2orp6uy9.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4fovth147rkryhtc.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4hieqhgdqo8sqmvm.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4ixe1jq7z4xrm88x.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4k6vf6qr8mqyedpj.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4kff9y3l0zd3xbyt.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4lgw2wbxsqzi5tnv.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4tak3ek41v1zk0r1.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4tglt6a2m1hvqhbk.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4ugmqj3hm68ciuqy.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4y4x2ducpuwkydk1.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4yjya6qpcuouip5.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.4z5rdfm5poghcaxk.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.57bqeacloymar4bh.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.6bxf10qc3xfskjo.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.buv90q9dj3crion.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.m33duvfeq6gb8pt.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.n9wti139t97t7gs.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.nv227vbqwatwwoa.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.osf1id40euuhw3.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.un1hubvuq71e8jn.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.x7aiq4a9fwy19xs.rcgu.o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.z8989st91i67btt.rcgu.o" "-o" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/gooey-8073e498eb41c45c.326xa2o4atoeqpi4.rcgu.o" "--gc-sections" "-L" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps" "-L" "/home/ubuntu/temp/diosix/src/services/target/debug/deps" "-L" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/build/diosix-services-08273ac74e689f54/out" "-L" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-none-elf/lib" "-Bstatic" "--whole-archive" "-lmason-bundle" "--no-whole-archive" "--start-group" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/libsupervisor-23833f2ff29fb3a3.rlib" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/liblinked_list_allocator-61d6e6898e9fc29c.rlib" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/libspinning_top-bde1d62664c03035.rlib" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/liblock_api-e4723366850a7c79.rlib" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/libscopeguard-f4f9de0a9a69797c.rlib" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/libriscv-9ace5bdf7852cc73.rlib" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/libbit_field-9d02f2fc1f5ccc0b.rlib" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/libbare_metal-7594edd708b873cd.rlib" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/libspin-e001ea58601280ce.rlib" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/liblazy_static-498a4a25c3c761aa.rlib" "/home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/deps/libspin-af647bf234b573e8.rlib" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-none-elf/lib/liballoc-aa39dc0fc06f43e0.rlib" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-none-elf/lib/librustc_std_workspace_core-e30a52609bcf09ba.rlib" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-none-elf/lib/libcore-5f3ec282930f4c98.rlib" "--end-group" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-none-elf/lib/libcompiler_builtins-141bb7bc8ac65192.rlib" "-Tsrc/supervisor-riscv/link.ld" "-pie" "--no-dynamic-linker" "-Bdynamic"
  = note: riscv64-linux-gnu-ld: /home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/build/diosix-services-08273ac74e689f54/out/libmason-bundle.a(entry.o): can't link double-float modules with soft-float modules
          riscv64-linux-gnu-ld: failed to merge target specific data of file /home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/build/diosix-services-08273ac74e689f54/out/libmason-bundle.a(entry.o)
          riscv64-linux-gnu-ld: /home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/build/diosix-services-08273ac74e689f54/out/libmason-bundle.a(irq.o): can't link double-float modules with soft-float modules
          riscv64-linux-gnu-ld: failed to merge target specific data of file /home/ubuntu/temp/diosix/src/services/target/riscv64gc-unknown-none-elf/debug/build/diosix-services-08273ac74e689f54/out/libmason-bundle.a(irq.o)
          riscv64-linux-gnu-ld: warning: section `.bss' type changed to PROGBITS

error: aborting due to previous error

error: could not compile `diosix-services`

To learn more, run the command again with --verbose.
error: Recipe `_services` failed on line 204 with exit code 101
just quiet=no  75.42s user 3.79s system 461% cpu 17.148 total
101 
diodesign commented 3 years ago

Thanks for the report. I'm a bit confused at the moment because it builds on:

But not on:

@Steinegger: Which OS and version of riscv64-linux-gnu-ld are you using, please?

Steinegger commented 3 years ago

To add to the confusion: I was building it on 20.04.2:

% riscv64-linux-gnu-ld --version
GNU ld (GNU Binutils for Ubuntu) 2.34
[...]
% lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.2 LTS
Release:        20.04
Codename:       focal
% dpkg -l | grep riscv
ii  binutils-riscv64-linux-gnu           2.34-6ubuntu1.1                       amd64        GNU binary utilities, for riscv64-linux-gnu target

I would have tried with the toolchain I built from scratch instead of the one from the package manager but I couldn't find a way to override that part?

diodesign commented 3 years ago

To override the linker paths, you need to edit the .cargo/config files in src/hypervisor and src/services and change the appropriate settings. In the meantime, I've moved away from assembling and linking files via the Mason build script, and instead used the Rust toolchain to handle the assembly and linkage. This work is in the ripmason branch.

I can get this to build on:

Though not Debian bullsey/sid with 2.35. And also the boot process doesn't complete, though I'm still working on it. It might be that 2.31 to 2.34 is good. I'd like to find the root cause -- please bear with me.

diodesign commented 3 years ago

@Steinegger Could you please try building the latest development branch (ripmason) and see if works for you with binutils version 2.34-6ubuntu1.1? Eg:

git clone -b ripmason --recurse-submodules https://github.com/diodesign/diosix.git
cd diosix && just

Would be interested to see if that works, and if so, that just leaves 2.35.x to deal with. Thanks!

Steinegger commented 3 years ago

@diodesign I just tested it and it works perfectly with my configuration :+1:

diodesign commented 3 years ago

Awesome :) Thanks so much for testing it -- I'm going to keep this issue open for now in case anyone else runs into a binutils clash. It might be a 2.35.x problem.