Hi Jon, On Feb 1 17:25, Jon Turney wrote: > Be more careful not to remove an existing .gnu_debuglink, even if we > think this package has no useful debug symbols. > > (Some versions of 'llvm-objdump -l' fail to find line number info even > though it's there. Don't break a package which manages it's own debug > symbols (e.g. cygwin) when that happens.) > --- > lib/src_postinst.cygpart | 28 ++++++++++++++++++---------- > 1 file changed, 18 insertions(+), 10 deletions(-) > > diff --git a/lib/src_postinst.cygpart b/lib/src_postinst.cygpart > index d8bb226..e29b2cb 100644 > --- a/lib/src_postinst.cygpart > +++ b/lib/src_postinst.cygpart > @@ -1051,23 +1051,31 @@ __prepstrip() { > > lines=$(${objdump} -d -l "${exe}" 2>/dev/null | sed -ne > "s|.*\(/usr/src/debug/${PF}/.*\):[0-9]*$|\1|gp" | sort -u | tee -a > ${T}/.dbgsrc.out | wc -l);
Shouldn't lines be computed *after* the new check for .gnu_deb? After all, it's still pretty time-consuming and if the .gnu_deb check kicks in it's never tested... > > - if (( lines == 0 )) > + # we expect --add-gnu-debuglink to fail if a > + # .gnu_debuglink section already exists (e.g. binutils, > + # which uses hardlinks, or cygwin which creates a custom > + # .dbg file), but leave it alone to make sure we don't > + # mess it up. > + if ${objdump} -h "${exe}" | grep -q '\.gnu_deb' > then > - ${objcopy} --strip-all "${exe}"; > continue; > fi > > - # --add-gnu-debuglink will fail if .gnu_debuglink > section > - # already exists, e.g. binutils, which uses hardlinks, > - # or cygwin which creates a custom .dbg file > - if ! ${objdump} -h "${exe}" | grep -q '\.gnu_deb' > + # only create split debuginfo if it's going to contain > + # some symbols for which this package has the > + # corresponding source files > + if (( lines == 0 )) > then > - dodir "${dbg%/*}"; > - ${objcopy} --long-section-names enable > --add-gnu-debuglink=/dev/null --only-keep-debug "${exe}" "${D}${dbg}"; > - chmod 0644 "${D}${dbg}"; > ${objcopy} --strip-all "${exe}"; > - ${objcopy} --long-section-names enable > --add-gnu-debuglink="${D}${dbg}" "${exe}" 2>/dev/null; > + continue; > fi > + > + dodir "${dbg%/*}"; > + ${objcopy} --long-section-names enable > --add-gnu-debuglink=/dev/null --only-keep-debug "${exe}" "${D}${dbg}"; > + chmod 0644 "${D}${dbg}"; > + ${objcopy} --strip-all "${exe}"; > + ${objcopy} --long-section-names enable > --add-gnu-debuglink="${D}${dbg}" "${exe}" 2>/dev/null; > + > fi > done > } > -- > 2.34.1