From 7a3daadb269c0e027da2988a861b0b6b0a91a772 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 28 Jun 2017 22:25:38 +0200 Subject: [PATCH] Add find-debuginfo-filter-built-ins.patch. --- find-debuginfo-filter-built-ins.patch | 36 +++++++++++++++++++++++++++ rpm.spec | 4 +++ 2 files changed, 40 insertions(+) create mode 100644 find-debuginfo-filter-built-ins.patch diff --git a/find-debuginfo-filter-built-ins.patch b/find-debuginfo-filter-built-ins.patch new file mode 100644 index 0000000..02903c2 --- /dev/null +++ b/find-debuginfo-filter-built-ins.patch @@ -0,0 +1,36 @@ +commit 78df22afc540c6c34003c3cb8ecc3ee686fbef76 +Author: Mark Wielaard +Date: Wed Jun 28 13:25:12 2017 +0200 + + find-debuginfo.sh: Filter out all like fake file names. + + There is no official way to mark an instruction range as being not + part of some actual source code, but as part of a compiler built-in + construct in DWARF. So different compilers have come up with fake + source file names like or <__thread_local_inner macros>. + We already filtered out the strings "" and "". + Just filter out all '(^|/)<[a-z _-]+>$'. They are fake files! + + This is mainly to appease the rustc compiler which generates lots of + different variants to encode some instruction sequence is part of an + compiler generated macro expansion. + + Signed-off-by: Mark Wielaard + +diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh +index 0233d92..555e7b8 100755 +--- a/scripts/find-debuginfo.sh ++++ b/scripts/find-debuginfo.sh +@@ -502,7 +502,11 @@ if [ -s "$SOURCEFILE" ]; then + fi + + mkdir -p "${RPM_BUILD_ROOT}${debug_dest_name}" +- LC_ALL=C sort -z -u "$SOURCEFILE" | grep -E -v -z '(|)$' | ++ # Filter out anything compiler generated which isn't a source file. ++ # e.g. , , <__thread_local_inner macros>. ++ # Some compilers generate them as if they are part of the working ++ # directory (which is why we match against ^ or /). ++ LC_ALL=C sort -z -u "$SOURCEFILE" | grep -E -v -z '(^|/)<[a-z _-]+>$' | + (cd "${debug_base_name}"; cpio -pd0mL "${RPM_BUILD_ROOT}${debug_dest_name}") + # stupid cpio creates new directories in mode 0700, + # and non-standard modes may be inherented from original directories, fixup diff --git a/rpm.spec b/rpm.spec index 84114aa..9c57c6b 100644 --- a/rpm.spec +++ b/rpm.spec @@ -105,6 +105,9 @@ Patch286: debugsrc-and-sub-debuginfo-packages.patch # debugedit check prefix match ends with slash. Patch290: debugedit-prefix.patch +# find-debuginfo.sh: Filter out all like fake file names. +Patch291: find-debuginfo-filter-built-ins.patch + # OpenSSL backend Patch300: 0001-Add-OpenSSL-support-for-digest-and-signatures.patch @@ -616,6 +619,7 @@ exit 0 %changelog * Thu Jun 29 2017 Mark Wielaard - Add debugedit-prefix.patch. +- Add find-debuginfo-filter-built-ins.patch. * Wed Jun 28 2017 Mark Wielaard - 4.13.0.1-27 - Add find-debuginfo-split-traversal-and-extraction-fix.patch (#1465170)