summaryrefslogtreecommitdiffstats
path: root/scripts/libmakepkg/tidy
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2018-06-13 03:17:18 +0200
committerAllan McRae <allan@archlinux.org>2018-07-19 04:23:57 +0200
commit8b4be66a3006abe209f6f6a8ef13991cfa57fe34 (patch)
tree208ebf02005132a8d79e05c8c756e570a3517566 /scripts/libmakepkg/tidy
parent9a8c7154b1b5842a08db27bd3c3a1607fa0c8f0f (diff)
downloadpacman-8b4be66a3006abe209f6f6a8ef13991cfa57fe34.tar.gz
pacman-8b4be66a3006abe209f6f6a8ef13991cfa57fe34.tar.xz
libmakepkg/tidy: fix debug sources not being properly detected sometimes
DW_AT_comp_dir is meant to contain the directory in which the compiler was run DW_AT_name contains the source file the compiler was told to use. In the event that DW_AT_name is an absolute path, it is (obviously) not meant to be computed relative to DW_AT_comp_dir. However, we did not handle this correctly, and as a result tried to copy source files using doubled-up filepaths. The correct approach should be to use DW_AT_name on its own, in the event that it is an absolute path. See http://wiki.dwarfstd.org/index.php?title=Best_Practices. This fixes debug package generation for many packages that use absolute paths in their build systems... like CMake. Reported-by: Jagannathan Tiruvallur Eachambadi <jagannathante@gmail.com> Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'scripts/libmakepkg/tidy')
-rw-r--r--scripts/libmakepkg/tidy/strip.sh.in2
1 files changed, 1 insertions, 1 deletions
diff --git a/scripts/libmakepkg/tidy/strip.sh.in b/scripts/libmakepkg/tidy/strip.sh.in
index 36d1b89e..5937e13c 100644
--- a/scripts/libmakepkg/tidy/strip.sh.in
+++ b/scripts/libmakepkg/tidy/strip.sh.in
@@ -37,7 +37,7 @@ build_id() {
source_files() {
LANG=C readelf "$1" --debug-dump | \
- awk '/DW_AT_name +:/{name=$8}/DW_AT_comp_dir +:/{print $8 "/" name}'
+ awk '/DW_AT_name +:/{name=$8}/DW_AT_comp_dir +:/{{if (name !~ /^\//) {printf "%s/", $8}}{print name}}'
}
strip_file() {