From b4d166652011f0d0e8573feb616283698f6cf848 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 28 Jun 2017 13:34:55 +0200 Subject: [PATCH 40/49] 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 (cherry picked from commit ff239ff4b06c86485eccaf8f4ecadc9bceb34748) --- scripts/find-debuginfo.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh index bede833d7..eb62a158a 100644 --- 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 -- 2.13.2