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 Wed, Nov 26, 2025 at 16:10:32 +0300, Valery Ushakov wrote:

> The second use case is compiling code on sparc64 with -m32.  We do
> that as part of the _64-bit_ build and ship it as the base32 set.
>
[...]
> $ readelf -d hello | grep NEED
>  0x00000001 (NEEDED)                     Shared library: [libc.so.12]
> $ ldd hello
> hello:
> 	-lc.12 => /usr/lib/i386/libc.so.12
[...]
> The library search is special cased by libexec/ld.elf_so/rtld.c
> where _rtld_init does:
> 
>       _rtld_add_paths(execname, &_rtld_default_paths,
>           RTLD_DEFAULT_LIBRARY_PATH);
> 
> #ifdef RTLD_ARCH_SUBDIR
>        _rtld_add_paths(execname, &_rtld_default_paths,
>            RTLD_DEFAULT_LIBRARY_PATH "/" RTLD_ARCH_SUBDIR);
> #endif

To reiterate, the /usr/lib/i386/libc.so.12 was compiled as part of an
amd64 build with -m32 and was shipped as part of amd64 sets.  There
may be differences with the native 32-bit version.  E.g. on sparc a
sligtly different set of atomic primitives is provided by the compat
libc (this might or might not be a bug, I couldn't get an answer from
people in the know).

Also, we only build base libs as part of compat sets, we don't build
X11 libraries - you will need to grab those yourself from the native
32-bit sets (I have to deal with this a lot, b/c when I play with
32-bit only Inferno or Self on a 64-bit host, the X11 libraries in a
different location is a constant source of minor annoyance).

-uwe


Home | Main Index | Thread Index | Old Index