Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Jun 2019 01:19:00 +0000 (UTC)
From:      Bryan Drewery <bdrewery@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r505131 - head/Mk/Scripts
Message-ID:  <201906260119.x5Q1J0F4069515@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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@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}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201906260119.x5Q1J0F4069515>