!xmLtiCaAJxfhURjrXl:matrix.org

NixOS RISC-V

207 Members
NixOS on RISC-V https://wiki.nixos.org/wiki/RISC-V https://pad.lassul.us/NixOS-riscv64-linux https://github.com/orgs/NixOS/teams/risc-v63 Servers

Load older messages


SenderMessageTime
12 Nov 2025
@joerg:thalheim.ioMic92I think there might be something your gcc tries to map to an fixed address space adress that the kernel even before staring ld.so outrightly refuses05:55:56
@joerg:thalheim.ioMic92* I think there might be something your gcc tries to map to an fixed address space adress that the kernel even before starting ld.so outrightly refuses05:56:15
@rosscomputerguy:matrix.orgTristan Ross
roma@mu-gundam:~/nixpkgs$ strace -E LD_DEBUG=all /nix/store/kg61gdq4svvph0c4pcsf867r8nkbiqs7-bootstrap-tools/lib/ld-linux-riscv64-lp64d.so.1 /nix/store/kg61gdq4svvph0c4pcsf867rc
execve("/nix/store/kg61gdq4svvph0c4pcsf867r8nkbiqs7-bootstrap-tools/lib/ld-linux-riscv64-lp64d.so.1", ["/nix/store/kg61gdq4svvph0c4pcsf8"..., "/nix/store/kg61gdq4svvph0c4pcsf8"0
brk(NULL)                               = 0x7fff84224000
openat(AT_FDCWD, "/nix/store/kg61gdq4svvph0c4pcsf867r8nkbiqs7-bootstrap-tools/bin/gcc", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\2\0\363\0\1\0\0\0\230\312\2\0\0\0\0\0"..., 832) = 832
getpid()                                = 6665
writev(2, [{iov_base="      6665:\t", iov_len=12}, {iov_base="file=", iov_len=5}, {iov_base="/nix/store/kg61gdq4svvph0c4pcsf8"..., iov_len=67}, {iov_base=" [", iov_len=2}, {iovp
) = 111
mmap(0xf000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = -1 EPERM (Operation not permitted)
close(3)                                = 0
writev(2, [{iov_base="/nix/store/kg61gdq4svvph0c4pcsf8"..., iov_len=67}, {iov_base=": ", iov_len=2}, {iov_base="error while loading shared libra"..., iov_len=36}, {iov_base=": t
) = 217
exit_group(127)                         = ?
+++ exited with 127 +++
05:56:34
@rosscomputerguy:matrix.orgTristan RossBest I can get out of the UART atm05:56:46
@joerg:thalheim.ioMic92 mmap(0xf000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = -1 EPERM (Operation not permitted) 05:57:53
@joerg:thalheim.ioMic92Now do readelf and look for suspicious addresses. 05:58:18
@joerg:thalheim.ioMic920xf00005:58:33
@joerg:thalheim.ioMic92But might not exactly the same05:58:49
@joerg:thalheim.ioMic92Potentially it applied an offset already 05:59:09
@rosscomputerguy:matrix.orgTristan Ross
Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  PHDR           0x0000000000000040 0x000000000000f040 0x000000000000f040
                 0x00000000000002a0 0x00000000000002a0  R      0x8
  RISCV_ATTRIBUT 0x0000000000219e92 0x0000000000000000 0x0000000000000000
                 0x0000000000000057 0x0000000000000000  R      0x1
  GNU_STACK      0x0000000000001000 0x0000000000000000 0x0000000000000000
                 0x0000000000000000 0x0000000000000000  RW     0x10
  LOAD           0x0000000000000000 0x000000000000f000 0x000000000000f000
                 0x0000000000001000 0x0000000000001000  RW     0x1000
  LOAD           0x0000000000001000 0x0000000000010000 0x0000000000010000
                 0x000000000020ded0 0x000000000020ded0  R E    0x1000
  INTERP         0x00000000000142d0 0x00000000000232d0 0x00000000000232d0
                 0x000000000000005c 0x000000000000005c  R      0x1
      [Requesting program interpreter: /nix/store/kg61gdq4svvph0c4pcsf867r8nkbiqs7-bootstrap-tools/lib/ld-linux-riscv64-lp64d.so.1]
  NOTE           0x0000000000014330 0x0000000000023330 0x0000000000023330
                 0x0000000000000020 0x0000000000000020  R      0x4
  GNU_EH_FRAME   0x00000000001c41d8 0x00000000001d31d8 0x00000000001d31d8
                 0x000000000000967c 0x000000000000967c  R      0x4
  LOAD           0x000000000020ef58 0x000000000021ef58 0x000000000021ef58
                 0x000000000000af28 0x00000000000103b8  RW     0x1000
  TLS            0x000000000020ef58 0x000000000021ef58 0x000000000021ef58
                 0x0000000000000000 0x0000000000000010  R      0x8
  GNU_RELRO      0x000000000020ef58 0x000000000021ef58 0x000000000021ef58
                 0x00000000000080a8 0x00000000000080a8  R      0x1
  DYNAMIC        0x0000000000216dd0 0x0000000000226dd0 0x0000000000226dd0
                 0x0000000000000230 0x0000000000000230  RW     0x8
05:59:14
@joerg:thalheim.ioMic92VirtAddr looks suspicious06:00:09
@rosscomputerguy:matrix.orgTristan RossOf the PHDR?06:01:03
@rosscomputerguy:matrix.orgTristan Ross

ls works so presumably, it should look like this:

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  PHDR           0x0000000000000040 0x0000000000010040 0x0000000000010040
                 0x0000000000000230 0x0000000000000230  R      0x8
  RISCV_ATTRIBUT 0x000000000012b89a 0x0000000000000000 0x0000000000000000
                 0x0000000000000057 0x0000000000000000  R      0x1
  GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x0000000000000000 0x0000000000000000  RW     0x10
  LOAD           0x0000000000000000 0x0000000000010000 0x0000000000010000
                 0x000000000011c610 0x000000000011c610  R E    0x1000
  INTERP         0x0000000000000270 0x0000000000010270 0x0000000000010270
                 0x000000000000005c 0x000000000000005c  R      0x1
      [Requesting program interpreter: /nix/store/kg61gdq4svvph0c4pcsf867r8nkbiqs7-bootstrap-tools/lib/ld-linux-riscv64-lp64d.so.1]
  NOTE           0x00000000000002e4 0x00000000000102e4 0x00000000000102e4
                 0x0000000000000044 0x0000000000000044  R      0x4
  GNU_EH_FRAME   0x00000000001015b0 0x00000000001115b0 0x00000000001115b0
                 0x00000000000030bc 0x00000000000030bc  R      0x4
  LOAD           0x000000000011cf68 0x000000000012df68 0x000000000012df68
                 0x000000000000e920 0x0000000000023ba0  RW     0x1000
  GNU_RELRO      0x000000000011cf68 0x000000000012df68 0x000000000012df68
                 0x000000000000a098 0x000000000000a098  R      0x1
  DYNAMIC        0x0000000000126dd0 0x0000000000137dd0 0x0000000000137dd0
                 0x0000000000000230 0x0000000000000230  RW     0x8
06:01:56
@joerg:thalheim.ioMic92But i am not super familiar with virtual addresses on RISC-V to be honest. So i don't which adresses are acceptable on that architecture. You should consult the RISC-V os spec06:02:33
@rosscomputerguy:matrix.orgTristan RossOh...06:02:44
@joerg:thalheim.ioMic92Maybe for now compare it with other binaries 06:03:16
@joerg:thalheim.ioMic92And it's also hard to read for me. You want to look at what load addresses are requested 06:05:14
@joerg:thalheim.ioMic92Is riscv 4k page aligned. Usually the first page should not be mapped in userspace 06:06:27
@rosscomputerguy:matrix.orgTristan Ross

When I updated bootstrap-tools on my clone, I got awk to work and it works with this:

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  PHDR           0x0000000000000040 0x0000000000000040 0x0000000000000040
                 0x00000000000002a0 0x00000000000002a0  R      0x8
  RISCV_ATTRIBUT 0x00000000000b1022 0x0000000000000000 0x0000000000000000
                 0x000000000000006a 0x0000000000000000  R      0x1
  LOAD           0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x00000000000ab84c 0x00000000000ab84c  R E    0x1000
  GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x0000000000000000 0x0000000000000000  RW     0x10
  GNU_EH_FRAME   0x0000000000098fc8 0x0000000000098fc8 0x0000000000098fc8
                 0x00000000000017a4 0x00000000000017a4  R      0x4
  NOTE           0x00000000000ab82c 0x00000000000ab82c 0x00000000000ab82c
                 0x0000000000000020 0x0000000000000020  R      0x4
  LOAD           0x00000000000ac848 0x00000000000ac848 0x00000000000ac848
                 0x00000000000047c8 0x000000000000c818  RW     0x1000
  GNU_RELRO      0x00000000000ac848 0x00000000000ac848 0x00000000000ac848
                 0x00000000000037b8 0x00000000000037b8  R      0x1
  DYNAMIC        0x00000000000af2d0 0x00000000000af2d0 0x00000000000af2d0
                 0x0000000000000230 0x0000000000000230  RW     0x8
  INTERP         0x00000000000b2000 0x00000000000ba000 0x00000000000ba000
                 0x000000000000005c 0x000000000000005c  R      0x1
      [Requesting program interpreter: /nix/store/95y6xmfgcvgxjmba9xm6ccxxnf6i61pw-bootstrap-tools/lib/ld-linux-riscv64-lp64d.so.1]
  LOAD           0x00000000000b2000 0x00000000000ba000 0x00000000000ba000
                 0x0000000000000060 0x0000000000000060  RW     0x1000
  LOAD           0x00000000000b3000 0x00000000000bb000 0x00000000000bb000
                 0x00000000000019d0 0x00000000000019d0  RW     0x1000

So maybe the virt addr PHDR isn't as important

06:06:33
@joerg:thalheim.ioMic92* Is riscv 4k page aligned? Usually the first page should not be mapped in userspace 06:06:36
@joerg:thalheim.ioMic92Not sure if this is your thing, but llms are pretty good at having read all of the cpu architecture specs and have found in the past for me pretty quickly oddities in readelf. 06:09:20
@rosscomputerguy:matrix.orgTristan RossI've been rubber ducking ChatGPT since Sunday with this problem06:09:44
@rosscomputerguy:matrix.orgTristan RossIt believe AppArmor is the problem, despite me disabling it thinking that was the problem06:10:10
@joerg:thalheim.ioMic92Feels unlikely. 06:10:53
@joerg:thalheim.ioMic92You would see the audit log in dmesg06:11:16
@rosscomputerguy:matrix.orgTristan RossYeah, which I don't but ChatGPT is just confident it's AppArmor lol06:11:33
@joerg:thalheim.ioMic92It's definitely the mmap syscall requesting that returns eperm 06:12:33
@joerg:thalheim.ioMic92You could even ask it to write an mmap call on these parameters to reproduce it06:13:30
@joerg:thalheim.ioMic92I just don't know which load segment is off. My brain cannot parse these unaligned columns from the phone06:14:34
@rosscomputerguy:matrix.orgTristan Ross
$ zcat /proc/config.gz | grep CONFIG_STRICT_KERNEL_RWX
CONFIG_STRICT_KERNEL_RWX=y

Could this be a problem?

06:14:54

Show newer messages


Back to Room ListRoom Version: 10