178344Sobrien#!/bin/sh
278344Sobrien#
398184Sgordon# $FreeBSD: releng/11.0/etc/rc.d/ldconfig 301004 2016-05-30 19:59:51Z ngie $
478344Sobrien#
578344Sobrien
678344Sobrien# PROVIDE: ldconfig
7301004Sngie# REQUIRE: FILESYSTEMS
898184Sgordon# BEFORE:  DAEMON
978344Sobrien
1078344Sobrien. /etc/rc.subr
1178344Sobrien
1278344Sobrienname="ldconfig"
13298514Slmedesc="Configure the shared library cache"
1498184Sgordonldconfig_command="/sbin/ldconfig"
1578344Sobrienstart_cmd="ldconfig_start"
1678344Sobrienstop_cmd=":"
1778344Sobrien
1878344Sobrienldconfig_start()
1978344Sobrien{
20165664Syar	local _files _ins
21159833Sflz
22124618Smtm	_ins=
23124618Smtm	ldconfig=${ldconfig_command}
24124618Smtm	checkyesno ldconfig_insecure && _ins="-i"
25124618Smtm	if [ -x "${ldconfig_command}" ]; then
26124618Smtm		_LDC="/lib /usr/lib"
27154114Sdougb		for i in ${ldconfig_local_dirs}; do
28154114Sdougb			if [ -d "${i}" ]; then
29159833Sflz				_files=`find ${i} -type f`
30159833Sflz				if [ -n "${_files}" ]; then
31159833Sflz					ldconfig_paths="${ldconfig_paths} `cat ${_files} | sort -u`"
32159833Sflz				fi
33154114Sdougb			fi
34154114Sdougb		done
35124618Smtm		for i in ${ldconfig_paths} /etc/ld-elf.so.conf; do
36124618Smtm			if [ -r "${i}" ]; then
37124618Smtm				_LDC="${_LDC} ${i}"
38124618Smtm			fi
39124618Smtm		done
40197947Sdougb		check_startmsgs && echo 'ELF ldconfig path:' ${_LDC}
41124618Smtm		${ldconfig} -elf ${_ins} ${_LDC}
42124618Smtm
43154114Sdougb		case `sysctl -n hw.machine_arch` in
44154114Sdougb		amd64)
45154114Sdougb			for i in ${ldconfig_local32_dirs}; do
46154114Sdougb				if [ -d "${i}" ]; then
47159833Sflz					_files=`find ${i} -type f`
48159833Sflz					if [ -n "${_files}" ]; then
49159833Sflz						ldconfig32_paths="${ldconfig32_paths} `cat ${_files} | sort -u`"
50159833Sflz					fi
51154114Sdougb				fi
52154114Sdougb			done
53174567Sjhb			_LDC=""
54174567Sjhb			for i in ${ldconfig32_paths}; do
55174567Sjhb				if [ -r "${i}" ]; then
56174567Sjhb					_LDC="${_LDC} ${i}"
57174567Sjhb				fi
58174567Sjhb			done
59197947Sdougb			check_startmsgs &&
60179945Smtm			    echo '32-bit compatibility ldconfig path:' ${_LDC}
61174567Sjhb			${ldconfig} -32 -m ${_ins} ${_LDC}
62154114Sdougb			;;
63154114Sdougb		esac
64154114Sdougb
65294295Simp		case `sysctl -n hw.machine_arch` in
66294295Simp		armv6)
67294295Simp			for i in ${ldconfig_localsoft_dirs}; do
68294295Simp				if [ -d "${i}" ]; then
69294295Simp					_files=`find ${i} -type f`
70294295Simp					if [ -n "${_files}" ]; then
71294295Simp						ldconfigsoft_paths="${ldconfigsoft_paths} `cat ${_files} | sort -u`"
72294295Simp					fi
73294295Simp				fi
74294295Simp			done
75294295Simp			_LDC=""
76294295Simp			for i in ${ldconfigsoft_paths}; do
77294295Simp				if [ -r "${i}" ]; then
78294295Simp					_LDC="${_LDC} ${i}"
79294295Simp				fi
80294295Simp			done
81294295Simp			check_startmsgs &&
82294295Simp			    echo 'Soft Float compatibility ldconfig path:' ${_LDC}
83294295Simp			${ldconfig} -soft -m ${_ins} ${_LDC}
84294295Simp			;;
85294295Simp		esac
86294295Simp
87124618Smtm		# Legacy aout support for i386 only
88124618Smtm		case `sysctl -n hw.machine_arch` in
89124618Smtm		i386)
90124618Smtm			# Default the a.out ldconfig path.
91124618Smtm			: ${ldconfig_paths_aout=${ldconfig_paths}}
92217073Simp			_LDC=""
93217073Simp			for i in /usr/lib/aout ${ldconfig_paths_aout} /etc/ld.so.conf; do
94117077Strhodes				if [ -r "${i}" ]; then
95103436Speter					_LDC="${_LDC} ${i}"
96103436Speter				fi
97103436Speter			done
98197947Sdougb			check_startmsgs && echo 'a.out ldconfig path:' ${_LDC}
99124618Smtm			${ldconfig} -aout ${_ins} ${_LDC}
100124618Smtm			;;
101124618Smtm		esac
102124618Smtm	fi
10378344Sobrien}
10478344Sobrien
10578344Sobrienload_rc_config $name
10678344Sobrienrun_rc_command "$1"
107