Re: EDK2 on RPi3 was: Re: u-boot debug, was: Re: U-boot on RPI3, sees disk but won't boot it

Mark Millard <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
On 2022-Oct-24, at 21:52, Warner Losh <[email protected]> wrote:
> 
> On Mon, Oct 24, 2022 at 9:32 PM Mark Millard <[email protected]> wrote:
> On 2022-Oct-24, at 17:50, bob prohaska <[email protected]> wrote:
> 
> . . .
> >> 
> > I've put the console output at
> > http://www.zefox.net/~fbsd/rpi2/20221024/boot_console
> > in case it's of interest.
> 
> . . .
> 
> I've not seen/noticed the following before:
> 
> QUOTE
> ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib /usr/local/lib/compat/pkg /usr/local/lib/compat/pkg
> Soft Float compatibility ldconfig path:
> ldconfig: illegal option -- o
> usage: ldconfig [-32] [-elf] [-Rimrv] [-f hints_file] [directory | file ...]
> END QUOTE
> 
> But, to my knowledge, "Soft Float" is not in use any more
> (by default, anyway). It might be that something is left
> over from long ago? Looking, I see:
> 
> I was sure that all attempts to use it in FreeBSD 12+ had been removed....
>  
> QUOTE
> author  Warner Losh <[email protected]>   2022-01-07 05:34:18 +0000
> committer       Warner Losh <[email protected]>   2022-01-07 05:34:18 +0000
> commit  d418bc27e601ec6bba0506d0efb62eca5eda5ab8 (patch)
> tree    14a7fb6ba93ab48d7e1c746a09e7d1d5de6f897e /libexec/rc/rc.d/ldconfig
> parent  b68d6892ba8aa14470e94a408b43ce4d8b1761da (diff)
> download        src-d418bc27e601ec6bba0506d0efb62eca5eda5ab8.tar.gz
> src-d418bc27e601ec6bba0506d0efb62eca5eda5ab8.zip
> 
> libsoft: Remove runtime ldconfig support for libsoft
> 
> Remove the runtime support for running ldconfig at boot to cache lists
> of libsoft libbraries.
> END QUOTE
> 
> ( Note: /libexec/rc/rc.d/ldconfig is installed to /etc/rc.d/ldconfig .)
> 
> Your /etc/rc.d/ldconfig script seems to have not been updated
> by use of etcupdate or mergemaster or other such. (How much
> else is also out of date? How much of what you have for /etc/
> and the like goes back to 2022-Jan-07 or before?)
> 
> Yea... that seems likely... Can you confirm that I've not messed up
> a merge somewhere?
 
I booted the RPi2B v1.1 that I have access to, using
(long output line split for readability):

# uname -apKU
FreeBSD OPiP2E_RPI2v1p1 14.0-CURRENT FreeBSD 14.0-CURRENT #49
main-n258610-ba7319e9091b-dirty: Fri Oct 14 18:27:46 PDT 2022
root@CA72_16Gp_ZFS:/usr/obj/BUILDs/main-CA7-nodbg-clang/usr/main-src/arm.armv7/sys/GENERIC-NODBG-CA7
arm armv7 1400072 1400072

(It also has a armv7 EFI loader from the closest artifact
build before the change that broke armv7 for that. I've
not yet updated to recent enough to have your fix.)

My updates track /etc/ changes via etcupdate in the scripts
I use (etcupdate since git). I do not get any of the lines:

Soft Float compatibility ldconfig path:
ldconfig: illegal option -- o
usage: ldconfig [-32] [-elf] [-Rimrv] [-f hints_file] [directory | file ...]


I'll note that the man arch lists "soft" in some
places in the Floating Point table, just not for
armv7. Showing the ones that do list "soft":

   Floating Point
           Architecture    float, double    long double
           aarch64         hard             soft, quad precision
. . .
           mips            soft             identical to double
           mipsel          soft             identical to double
. . .
           mipsn32         soft             identical to double
           mips64          soft             identical to double
           mips64el        soft             identical to double
. . .
           riscv64sf       soft             soft, quad precision

aarch64 and riscv64sf would apply to main [so: 14] for
long double. But I'm unsure of any implications for "Soft
Float compatibility ldconfig path".

For reference:

# grep -i soft /etc/rc.d/ldconfig
#

# more /etc/rc.d/ldconfig 
#!/bin/sh
#
# $FreeBSD$
#

# PROVIDE: ldconfig
# REQUIRE: FILESYSTEMS
# BEFORE:  DAEMON

. /etc/rc.subr

name="ldconfig"
desc="Configure the shared library cache"
ldconfig_command="/sbin/ldconfig"
start_cmd="ldconfig_start"
stop_cmd=":"

ldconfig_start()
{
        local _files _ins

        _ins=
        ldconfig=${ldconfig_command}
        checkyesno ldconfig_insecure && _ins="-i"
        if [ -x "${ldconfig_command}" ]; then
                _LDC="/lib /usr/lib"
                for i in ${ldconfig_local_dirs}; do
                        if [ -d "${i}" ]; then
                                _files=`find ${i} -type f`
                                if [ -n "${_files}" ]; then
                                        ldconfig_paths="${ldconfig_paths} `cat ${_files} | sort -u`"
                                fi
                        fi
                done
                for i in ${ldconfig_paths} /etc/ld-elf.so.conf; do
                        if [ -r "${i}" ]; then
                                _LDC="${_LDC} ${i}"
                        fi
                done
                startmsg 'ELF ldconfig path:' ${_LDC}
                ${ldconfig} -elf ${_ins} ${_LDC}

                machine_arch=$(sysctl -n hw.machine_arch)

                case ${machine_arch} in
                amd64|mips64|powerpc64)
                        for i in ${ldconfig_local32_dirs}; do
                                if [ -d "${i}" ]; then
                                        _files=`find ${i} -type f`
                                        if [ -n "${_files}" ]; then
                                                ldconfig32_paths="${ldconfig32_paths} `cat ${_files} | sort -u`"
                                        fi
                                fi
                        done
                        _LDC=""
                        for i in ${ldconfig32_paths}; do
                                if [ -r "${i}" ]; then
                                        _LDC="${_LDC} ${i}"
                                fi
                        done
                        startmsg '32-bit compatibility ldconfig path:' ${_LDC}
                        ${ldconfig} -32 ${_ins} ${_LDC}
                        ;;
                esac

        fi
}

load_rc_config $name
run_rc_command "$1"

By contrast, https://cgit.freebsd.org/src/tree/libexec/rc/rc.d/ldconfig?h=releng/12.4
still has the code:

		case `sysctl -n hw.machine_arch` in
		armv[67])
			for i in ${ldconfig_localsoft_dirs}; do
				if [ -d "${i}" ]; then
					_files=`find ${i} -type f`
					if [ -n "${_files}" ]; then
						ldconfigsoft_paths="${ldconfigsoft_paths} `cat ${_files} | sort -u`"
					fi
				fi
			done
			_LDC=""
			for i in ${ldconfigsoft_paths}; do
				if [ -r "${i}" ]; then
					_LDC="${_LDC} ${i}"
				fi
			done
			check_startmsgs &&
			    echo 'Soft Float compatibility ldconfig path:' ${_LDC}
			${ldconfig} -soft ${_ins} ${_LDC}
			;;
		esac

As does https://cgit.freebsd.org/src/tree/libexec/rc/rc.d/ldconfig?h=releng/13.1 .
As does https://cgit.freebsd.org/src/tree/libexec/rc/rc.d/ldconfig?h=stable/13 .

So it looks like only main [so: 14] has that code removed.

===
Mark Millard
marklmi at yahoo.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.