summaryrefslogtreecommitdiffstats
path: root/bin/prepstrip
blob: f01dc1d0d90f4f44508c9ceb76ba20cc255288af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/bash
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id: /var/cvsroot/gentoo-src/portage/bin/prepstrip,v 1.23.2.3 2005/08/15 02:58:20 vapier Exp $

if [ "${FEATURES//*nostrip*/true}" == "true" ] || [ "${RESTRICT//*nostrip*/true}" == "true" ] ; then
	echo "nostrip"
	exit 0
fi

STRIP="${STRIP:-${CHOST}-strip}"
type -p -- ${STRIP} > /dev/null || STRIP=strip

PORTAGE_STRIP_FLAGS=${PORTAGE_STRIP_FLAGS:---strip-unneeded}

banner=1

save_elf_debug() {
	local x=$1
	local y="${D}/usr/lib/debug/${x:${#D}:${#x}}"

	[ "${FEATURES//*splitdebug*/true}" != "true" ] && return 0

	mkdir -p $(dirname ${y})
	${CHOST}-objcopy --only-keep-debug ${x} ${y}.debug
	${CHOST}-objcopy --add-gnu-debuglink=${y}.debug ${x}
}

for x in $(scanelf -yRBF%F "$@") $(for y in "$@"; do find $y -type f -name '*.a' -print0 ; done); do
	if [ ${banner} -eq 1 ] ; then
		echo "strip: ${STRIP} ${PORTAGE_STRIP_FLAGS}"
		banner=0
	fi

	f=$(file "${x}") || continue
	[ -z "${f}" ] && continue

	if [[ ${f} == *"current ar archive"* ]] ; then
		echo "   ${x:${#D}:${#x}}"
		${STRIP} -g "${x}"
	fi
	if [[ ${f} == *"SB executable"* || ${f} == *"SB shared object"* ]] ; then
		echo "   ${x:${#D}:${#x}}"
		save_elf_debug "${x}"
		${STRIP} ${PORTAGE_STRIP_FLAGS} "${x}"
	fi
done