Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: compile and run 32bit programs on aarch64eb



On 11/24/25 11:49 AM, Michael van Elst wrote:
chris%groessler.org@localhost (Christian Groessler) writes:

Is there a way to tell the system to load 32bit binaries from somewhere
else? I remember in former times one could setup a tree under /usr/emul
(or so) for example to run iBCS2 or Solaris programs.

The 32bit compat code looks for files with /emul/netbsd32 prefixed.

E.g.:

arnold% uname -mp
evbarm aarch64

arnold% find /emul/netbsd32/ -ls
   42937      2 drwxr-xr-x    4 root              wheel                   512 Nov 24 11:45 /emul/netbsd32/
   42938      2 drwxr-xr-x    2 root              wheel                   512 Nov 24 11:44 /emul/netbsd32/libexec
   42939    172 -rwxr-xr-x    1 root              wheel                 87240 Nov 24 11:44 /emul/netbsd32/libexec/ld.elf_so
   42940      2 drwxr-xr-x    2 root              wheel                   512 Nov 24 11:46 /emul/netbsd32/lib
   42941   4160 -rw-r--r--    1 root              wheel               2116080 Nov 24 11:46 /emul/netbsd32/lib/libc.so.12

arnoldl% file ./hostname32
  file ./hostname32
./hostname32: ELF 32-bit LSB pie executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /libexec/ld.elf_so, for NetBSD 10.1, compiled for: earmv6hf, not stripped

arnold% ./hostname32
arnold


An alternative is to just set up a 32bit chroot.



It works for me now, thanks! I don't want to use chroot.


compat_netbsd32(8), which I've read before reading your mail Michael, could be improved a bit.

I couldn't make much sense out of

Since NetBSD 5.0 the base system has directly included support for 32-bit
     compatibility by installing 32-bit libraries and dynamic linker into
/usr. This includes compiler support for compiling 32-bit applications
     on platforms where this is supported.


Where under /usr would I put the 32bit dynamic libraries?

Also this sentence

     Before NetBSD 5.0 all of these files needed to be placed under
     /emul/netbsd32.

irritated me.

After NetBSD 5.0 (means: _now_) I've needed to place them under /emul/netbsd32 (specifically I've copied 32bit versions of /lib /libexec /usr/lib /usr/libexec there). If they can live elsewhere under /usr it's not obvious to me where, and I didn't want to drop them into the host's 64bit /lib /libexec /usr/lib /usr/libexec directories, fearing that I'd mess up my system.

regards,
chris


Home | Main Index | Thread Index | Old Index