Skip to content

Commit

Permalink
separateDebugInfo: Handle weird filenames properly
Browse files Browse the repository at this point in the history
  • Loading branch information
edolstra committed Feb 18, 2016
1 parent 854c27c commit bf63de1
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions pkgs/build-support/setup-hooks/separate-debug-info.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,13 @@ _separateDebugInfo() {
dst="$dst/lib/debug/.build-id"

# Find executables and dynamic libraries.
local -a files=($(find "$prefix" -type f -a \( -perm /0100 -o -name "*.so" -o -name "*.so.*" \)))

local i magic
for i in "${files[@]}"; do
while IFS= read -r -d $'\0' i; do
# Skip non-ELF files.
exec 10< "$i"
read -n 4 -u 10 magic
exec {fd}< "$i"
read -n 4 -u $fd magic
exec {fd}<&-
if ! [[ "$magic" =~ ELF ]]; then continue; fi
exec 10<&-

# Extract the Build ID. FIXME: there's probably a cleaner way.
local id="$(readelf -n "$i" | sed 's/.*Build ID: \([0-9a-f]*\).*/\1/; t; d')"
Expand All @@ -36,7 +34,7 @@ _separateDebugInfo() {

# Also a create a symlink <original-name>.debug.
ln -sfn ".build-id/${id:0:2}/${id:2}.debug" "$dst/../$(basename "$i")"
done
done < <(find "$prefix" -type f -a \( -perm /0100 -o -name "*.so" -o -name "*.so.*" \) -print0)
}

# - We might prefer to compress the debug info during link-time already,
Expand Down

0 comments on commit bf63de1

Please sign in to comment.