Igor Gnatenko 082d5d
From b4d166652011f0d0e8573feb616283698f6cf848 Mon Sep 17 00:00:00 2001
Igor Gnatenko 082d5d
From: Mark Wielaard <mark@klomp.org>
Igor Gnatenko 082d5d
Date: Wed, 28 Jun 2017 13:34:55 +0200
Mark Wielaard 284dc3
Subject: [PATCH] find-debuginfo.sh: Filter out all <built-in> like fake file
Mark Wielaard 284dc3
 names.
Mark Wielaard 7a3daa
Igor Gnatenko 082d5d
There is no official way to mark an instruction range as being not
Igor Gnatenko 082d5d
part of some actual source code, but as part of a compiler built-in
Igor Gnatenko 082d5d
construct in DWARF. So different compilers have come up with fake
Igor Gnatenko 082d5d
source file names like <built-in> or <__thread_local_inner macros>.
Igor Gnatenko 082d5d
We already filtered out the strings "<internal>" and "<built-in>".
Igor Gnatenko 082d5d
Just filter out all '(^|/)<[a-z _-]+>$'. They are fake files!
Igor Gnatenko 082d5d
Igor Gnatenko 082d5d
This is mainly to appease the rustc compiler which generates lots of
Igor Gnatenko 082d5d
different variants to encode some instruction sequence is part of an
Igor Gnatenko 082d5d
compiler generated macro expansion.
Igor Gnatenko 082d5d
Igor Gnatenko 082d5d
Signed-off-by: Mark Wielaard <mark@klomp.org>
Igor Gnatenko 082d5d
(cherry picked from commit ff239ff4b06c86485eccaf8f4ecadc9bceb34748)
Igor Gnatenko 082d5d
---
Igor Gnatenko 082d5d
 scripts/find-debuginfo.sh | 6 +++++-
Igor Gnatenko 082d5d
 1 file changed, 5 insertions(+), 1 deletion(-)
Mark Wielaard 7a3daa
Mark Wielaard 7a3daa
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh
Igor Gnatenko 082d5d
index bede833d7..eb62a158a 100644
Mark Wielaard 7a3daa
--- a/scripts/find-debuginfo.sh
Mark Wielaard 7a3daa
+++ b/scripts/find-debuginfo.sh
Mark Wielaard 7a3daa
@@ -502,7 +502,11 @@ if [ -s "$SOURCEFILE" ]; then
Mark Wielaard 7a3daa
   fi
Mark Wielaard 7a3daa
 
Mark Wielaard 7a3daa
   mkdir -p "${RPM_BUILD_ROOT}${debug_dest_name}"
Mark Wielaard 7a3daa
-  LC_ALL=C sort -z -u "$SOURCEFILE" | grep -E -v -z '(<internal>|<built-in>)$' |
Mark Wielaard 7a3daa
+  # Filter out anything compiler generated which isn't a source file.
Mark Wielaard 7a3daa
+  # e.g. <internal>, <built-in>, <__thread_local_inner macros>.
Mark Wielaard 7a3daa
+  # Some compilers generate them as if they are part of the working
Mark Wielaard 7a3daa
+  # directory (which is why we match against ^ or /).
Mark Wielaard 7a3daa
+  LC_ALL=C sort -z -u "$SOURCEFILE" | grep -E -v -z '(^|/)<[a-z _-]+>$' |
Mark Wielaard 7a3daa
   (cd "${debug_base_name}"; cpio -pd0mL "${RPM_BUILD_ROOT}${debug_dest_name}")
Mark Wielaard 7a3daa
   # stupid cpio creates new directories in mode 0700,
Mark Wielaard 7a3daa
   # and non-standard modes may be inherented from original directories, fixup