summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYaakov Selkowitz <yselkowi@redhat.com>2017-11-14 21:35:47 -0600
committerYaakov Selkowitz <yselkowi@redhat.com>2017-11-14 21:36:46 -0600
commitacdb7b060d1986e9e24650e2bd79079835ce07d8 (patch)
tree210f18047a011980f5cbf891ef374a953a7cd8aa
parentb05e9c0e695a0c30ef6fac6fed928133dde3668e (diff)
downloadcygwin-filesystem-acdb7b060d1986e9e24650e2bd79079835ce07d8.tar.gz
cygwin-filesystem-acdb7b060d1986e9e24650e2bd79079835ce07d8.tar.xz
cygwin-filesystem-acdb7b060d1986e9e24650e2bd79079835ce07d8.zip
Implement MiniDebugInfo for Cygwin binaries
-rwxr-xr-xcygwin-find-debuginfo.sh5
-rw-r--r--macros.cygwin1
2 files changed, 5 insertions, 1 deletions
diff --git a/cygwin-find-debuginfo.sh b/cygwin-find-debuginfo.sh
index 31c4799..83979e4 100755
--- a/cygwin-find-debuginfo.sh
+++ b/cygwin-find-debuginfo.sh
@@ -25,7 +25,10 @@ do
echo extracting debug info from $f
cygwin-objcopy --only-keep-debug $f $f.debug || :
pushd `dirname $f`
- cygwin-objcopy --add-gnu-debuglink=`basename $f.debug` --strip-unneeded `basename $f` || :
+ keep_symbols=`mktemp`
+ cygwin-nm --format=sysv --defined-only $f.debug | awk -F \| '{ if ($4 ~ "Function") print $1 }' | sort > "$keep_symbols"
+ cygwin-objcopy --add-gnu-debuglink=`basename $f.debug` --strip-unneeded --keep-symbols="$keep_symbols" `basename $f` || :
+ rm -f "$keep_symbols"
popd
done
diff --git a/macros.cygwin b/macros.cygwin
index 48b64c9..9e74224 100644
--- a/macros.cygwin
+++ b/macros.cygwin
@@ -7,6 +7,7 @@
%cygwin_strip cygwin-strip
%cygwin_objdump cygwin-objdump
%cygwin_objcopy cygwin-objcopy
+%cygwin_nm cygwin-nm
%cygwin_findprovides %{_rpmconfigdir}/cygwin-find-provides.sh %{cygwin_build_targets}
%cygwin_findrequires %{_rpmconfigdir}/cygwin-find-requires.sh %{cygwin_build_targets}