diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2018-06-13 03:17:18 +0200 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2018-07-19 04:23:57 +0200 |
commit | 8b4be66a3006abe209f6f6a8ef13991cfa57fe34 (patch) | |
tree | 208ebf02005132a8d79e05c8c756e570a3517566 | |
parent | 9a8c7154b1b5842a08db27bd3c3a1607fa0c8f0f (diff) | |
download | pacman-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>
-rw-r--r-- | scripts/libmakepkg/tidy/strip.sh.in | 2 |
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() { |