NixOS RISC-V | 240 Members | |
| NixOS on RISC-V https://wiki.nixos.org/wiki/RISC-V https://pad.lassul.us/NixOS-riscv64-linux | 72 Servers |
| Sender | Message | Time |
|---|---|---|
| 21 Jan 2024 | ||
In reply to @fgaz:matrix.orgNice, now I no longer need an ugly hack to build everything with RV64GC_Zba_Zbb (old bootstrap's GCC was too old). | 19:40:47 | |
| 23 Jan 2024 | ||
| hi, I'm building a RISC-V NixOS system for qemu without compressed instructions using this overlay http://sprunge.us/SzNRff that injects -march=rv64g via NIX_CFLAGS_COMPILE_riscv64_unknown_linux_gnu | 11:24:36 | |
| to ensure there are no compressed instructions I enabled a trap in QEMU that aborts if a compressed instruction is used | 11:25:04 | |
| it boots fine and reaches userspace, but there is a problem in libgcc_s.so, which causes a SIGILL | 11:25:32 | |
| I'm not sure if this method works for libgcc_s as it may end up being built by the new compiler, ignoring my -march hack | 11:27:04 | |
| any ideas? | 11:27:33 | |
In reply to @rdg:matrix.org Have you tried setting I'd share some specific code, but I can't find it. I think it might only be on my RISC-V system. | 13:07:12 | |
In reply to @rdg:matrix.org If you're compiling natively (YMMV for cross-compilation), the following should work, since it seems to be used by all gcc compilers, including when compiling gcc itself from the bootstrap gcc. | 13:20:24 | |
| * If you're compiling natively (YMMV for cross-compilation), the following should work, since it seems to be used by all gcc compilers, including when compiling gcc itself from the bootstrap gcc. | 13:20:53 | |
| Alex: I'm cross compiling, so I tried adding it in the nixpkgs.crossSystem.gcc.arch but I don't see it with NIX_DEBUG=1 being added anywhere | 13:27:30 | |
| for native compilation we had successfully used nixpkgs.localSystem.gcc.arch in other tests | 13:28:13 | |
| https://github.com/NixOS/nixpkgs/blob/15ff1758e7816331033baa14eebbea68626128f3/pkgs/build-support/cc-wrapper/default.nix#L601 | 15:33:44 | |
| it is injected before not after the original flags | 15:34:03 | |
In reply to @rdg:matrix.org I think it's because That whole function is a nightmare for RISC-V's highly customisable ISA... | 15:55:39 | |
| the flag arrives to cc-cflags-before | 15:57:33 | |
| the problem is that some packages inject their own -march, overriding it | 15:57:55 | |
| that's why I used NIX_CFLAGS_COMPILE_riscv64_unknown_linux_gnu, as it gets added after | 15:58:20 | |
| but it doesn't work for musl (required for the security wrappers) or rust | 15:58:48 | |
In reply to @rdg:matrix.orgOh, I think I might have encountered one of those. But I didn't really need it, so I replaced it with a package that worked (or patched it? I can't remember). | 15:59:10 | |
| I'm testing with gcc.arch again, and I will see if I can instead patch the broken packages | 15:59:39 | |
| as it seems to be a better solution | 15:59:56 | |
| 16:00:23 | ||
| Don't forget to look at the wiki page linked in the room description and update it if you find anything new. ^.^ | 16:00:58 | |
| 26 Jan 2024 | ||
| Using gcc.arch = "rv64g" works mostly okay, except for security wrappers that are compiled with pkgsStatic and the flag is not propagated there | 13:48:56 | |
| I had to also modify the kernel configuration to disable EFI | 13:49:21 | |
| I opened a PR to address the security wrappers issue: https://github.com/NixOS/nixpkgs/pull/283460 | 13:49:39 | |
| Now I'm trying to fix the rustc compiler, as it doesn't seem to have any target configuration without compressed instructions | 13:50:04 | |
| 27 Jan 2024 | ||
| 16:59:32 | ||
| 16:59:35 | ||
| 17:03:17 | ||