svn commit: r505131 - head/Mk/Scripts
Bryan Drewery
bdrewery at FreeBSD.org
Wed Jun 26 01:19:01 UTC 2019
Author: bdrewery
Date: Wed Jun 26 01:19:00 2019
New Revision: 505131
URL: https://svnweb.freebsd.org/changeset/ports/505131
Log:
generate-symbols: Commit a working version.
This file originated from Isilon's codebase. When I upstreamed it
originally I refactored it to a broken version. This is now the
working version.
Debug files are purposely moved to LOCALBASE/lib/debug regardless
of what PREFIX is.
Sponsored by: DellEMC
Modified:
head/Mk/Scripts/generate-symbols.sh
Modified: head/Mk/Scripts/generate-symbols.sh
==============================================================================
--- head/Mk/Scripts/generate-symbols.sh Wed Jun 26 01:07:41 2019 (r505130)
+++ head/Mk/Scripts/generate-symbols.sh Wed Jun 26 01:19:00 2019 (r505131)
@@ -1,6 +1,13 @@
#! /bin/sh
# $FreeBSD$
# Maintainer: portmgr at FreeBSD.org
+#
+# This script will find all ELF files in STAGEDIR and then strip and move
+# the symbols to LOCALBASE/lib/debug/<original path>.
+# For example:
+# /var/qmail/bin/qmaild -> /usr/local/lib/debug/var/qmail/bin/qmaild.debug
+# /usr/local/bin/ssh -> /usr/local/lib/debug/usr/local/bin/ssh
+LIB_DIR_PREFIX="${LOCALBASE}/lib/debug"
msg() {
echo "====> $*"
@@ -8,7 +15,7 @@ msg() {
msg "Finding symbols"
-# Find all ELF files, strip them, and move symbols to PREFIX/usr/lib/debug/ORIG_PATH
+# Find all ELF files
ELF_FILES=$(mktemp -t elf_files)
find ${STAGEDIR} -type f \
-exec /usr/bin/readelf -S {} + 2>/dev/null | awk ' \
@@ -17,23 +24,23 @@ find ${STAGEDIR} -type f \
> ${ELF_FILES}
# Create all of the /usr/local/lib/* dirs
-lib_dir="${STAGEDIR}.debug${PREFIX}/lib/debug"
-sed -e "s,^${STAGEDIR}${PREFIX}/,${lib_dir}/," -e 's,/[^/]*$,,' \
+lib_dir="${STAGEDIR}${LIB_DIR_PREFIX}"
+sed -e "s,^${STAGEDIR}/,${lib_dir}/," -e 's,/[^/]*$,,' \
${ELF_FILES} | sort -u | xargs mkdir -p
while read -r staged_elf_file; do
elf_file_name="${staged_elf_file##*/}"
- lib_dir_dest="${lib_dir}/${staged_elf_file#${STAGEDIR}${PREFIX}/}"
+ lib_dir_dest="${lib_dir}/${staged_elf_file#${STAGEDIR}/}"
# Strip off filename
lib_dir_dest="${lib_dir_dest%/*}"
# Save symbols to f.debug
- objcopy --only-keep-debug "${staged_elf_file}" \
- "${lib_dir_dest}/${elf_file_name}.debug"
+ debug_file_name="${lib_dir_dest}/${elf_file_name}.debug"
+ objcopy --only-keep-debug "${staged_elf_file}" "${debug_file_name}"
# Strip and add a reference to f.debug for finding the symbols.
objcopy --strip-debug --strip-unneeded \
- --add-gnu-debuglink="${lib_dir_dest}/${elf_file_name}.debug" \
- "${staged_elf_file}"
+ --add-gnu-debuglink="${debug_file_name}" "${staged_elf_file}"
msg "Saved symbols for ${staged_elf_file}"
-done < ${ELF_FILES}
+ echo "${debug_file_name#${STAGEDIR}}" >&3
+done < ${ELF_FILES} 3>> ${TMPPLIST}
rm -f ${ELF_FILES}
More information about the svn-ports-head
mailing list