On 16 Nov 2023, at 12:44, Dima Panov <[email protected]> wrote: > > Moin-moin! > > > This cause some errors while running, at least on aarch64, host and poudriere > jail > > > # service ldconfig restart > ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib > /usr/local/lib/compat/pkg /usr/local/lib/compat/pkg /usr/local/lib/e2fsprogs > /usr/local/lib/mysql /usr/local/lib/perl5/5.38/mach/CORE /usr/local/llvm16/lib > ELF binary type "9" not known. > eval: /libexec/ld-elf32.so.1: Exec format error > 32-bit compatibility ldconfig path: /usr/lib32
Yeah this breaks if the kernel and/or hardware don’t support 32-bit compat (not uncommon on modern Arm hardware). Also, parsing the human-readable output of ld-elf.so.1 -v to determine the path seems wrong and fragile. Given the above problem I think this should just be reverted, but if we instead want to press ahead with something like this (with suitable handling of this case) then we should really have ld-elf.so.1 produce machine-readable output (which could just be the space-separated string) for use the rc script, not go mangling -v’s output. But I really don’t see the issue with putting the paths in the script... Jess > On 14.11.2023 02:39, Konstantin Belousov wrote: >> The branch main has been updated by kib: >> URL: >> https://cgit.FreeBSD.org/src/commit/?id=99132daf6f70cb0cc969c555d3612547fa3cf1db >> commit 99132daf6f70cb0cc969c555d3612547fa3cf1db >> Author: John W. O'Brien <[email protected]> >> AuthorDate: 2023-11-12 22:45:27 +0000 >> Commit: Konstantin Belousov <[email protected]> >> CommitDate: 2023-11-13 23:39:17 +0000 >> rc.d/ldconfig: Prepend rtld stdlib paths to ldconfig(32)_paths >> Ensure that ldconfig-managed elf and elf32 hints always include >> the standard library paths that are known independently to rtld. >> PR: 275031 >> Reviewed by: kib >> MFC after: 2 weeks >> Sponsored by: Saltant Solutions LLC >> Differential Revision: https://reviews.freebsd.org/D42557 >> --- >> libexec/rc/rc.d/ldconfig | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> diff --git a/libexec/rc/rc.d/ldconfig b/libexec/rc/rc.d/ldconfig >> index 178a8a987be4..ecbbca210ea0 100755 >> --- a/libexec/rc/rc.d/ldconfig >> +++ b/libexec/rc/rc.d/ldconfig >> @@ -22,7 +22,7 @@ ldconfig_start() >> ldconfig=${ldconfig_command} >> checkyesno ldconfig_insecure && _ins="-i" >> if [ -x "${ldconfig_command}" ]; then >> - _LDC="/lib /usr/lib" >> + _LDC=$(/libexec/ld-elf.so.1 -v | sed -n -e '/^Default lib path /s///p' | >> tr : ' ') >> for i in ${ldconfig_local_dirs}; do >> if [ -d "${i}" ]; then >> _files=`find ${i} -type f` >> @@ -52,6 +52,9 @@ ldconfig_start() >> fi >> done >> _LDC="" >> + if [ -x /libexec/ld-elf32.so.1 ]; then >> + _LDC=$(/libexec/ld-elf32.so.1 -v | sed -n -e '/^Default lib path /s///p' | >> tr : ' ') >> + fi >> for i in ${ldconfig32_paths}; do >> if [ -r "${i}" ]; then >> _LDC="${_LDC} ${i}" > > -- > Sincerely, > Dima ([email protected], https://t.me/FluffyBSD) > (desktop, kde, x11, office, ports-secteam)@FreeBSD team
