[cfarm-users] RISC-V emulated systems available in BETA

Pierre Muller pierre at freepascal.org
Sat Nov 21 18:40:52 CET 2020


Hi,

Le 21/11/2020 à 16:39, Baptiste Jonglez a écrit :
> Hi,
> 
> On 21-11-20, Pierre Muller via cfarm-users wrote:
>>    It is indeed great to have a new riscv64 system available.
>>
>> I tried to use it to test Free Pascal on that CPU.
>>
>> I tried to use strace and gdb on gcc401:
>>
>> muller at gcc401:~/pas/check$ strace ~/bin/ppcrv64 -gl hello.pp
>> /usr/bin/strace: test_ptrace_get_syscall_info: PTRACE_TRACEME: Function not implemented
>> /usr/bin/strace: ptrace(PTRACE_TRACEME, ...): Function not implemented
>> /usr/bin/strace: PTRACE_SETOPTIONS: Function not implemented
>> /usr/bin/strace: detach: waitpid(117236): No child processes
>> /usr/bin/strace: Process 117236 detached
> 
> ...
> 
>> (gdb) r
>> Starting program: /home/muller/bin/ppcrv64 -gl hello.pp
>> warning: Error disabling address space randomization: Operation not permitted
>> warning: Could not trace the inferior process.
>> warning: ptrace: Function not implemented
>> During startup program exited with code 127.
> 
> Interesting.  It turns out many syscalls are disabled by default in
> containers, I have just enabled them: https://framagit.org/compile-farm/risc-v-virtual-cloud/-/commit/54ed75f5fd85f3d9974c6281b3b63994adfd08c4
> 
> This should fix the "address space randomization" warning and possibly
> other operations that require specific syscalls.

   Confirmed:
Reading symbols from /home/muller/bin/ppcrv64...
(gdb) r
Starting program: /home/muller/bin/ppcrv64 hello
warning: Could not trace the inferior process.
warning: ptrace: Function not implemented
During startup program exited with code 127.


> For ptrace, if I understand Andreas' answer, it's a limitation of qemu
> user-mode emulation.
> 
> Since /home is shared with the host, you can try something like this:
> 
> - build on gcc401 to benefit from the "native" compiler


> - then run qemu-riscv64-static yourself from gcc140 with the options
>    described by Andreas
   Is there a way to access the home of the container gcc401 from the gcc140 machine?

   I am sorry, but I really don't know docker,
would it be possible to have a symbolic link from the gcc140 home directory to
the home directory of gcc401 or gcc402?

   I tried to 'ssh gcc401' from within gcc140,
and that did not work...

   I also tried:
muller at gcc140:~$ docker info
Client:
  Debug Mode: false

Server:
ERROR: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.40/info": dial unix /var/run/docker.sock: connect: permission denied
errors pretty printing info
muller at gcc140:~$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json": dial unix /var/run/docker.sock: connect: permission denied

> Overall, it's a case where system-mode emulation would be better (or
> even better, having a physical machine), but it's not ready.

   Thanks for the feedback!

Pierre



More information about the cfarm-users mailing list