separateDebugInfo: Handle weird filenames properly
This commit is contained in:
parent
854c27c69c
commit
bf63de1613
@ -11,15 +11,13 @@ _separateDebugInfo() {
|
|||||||
dst="$dst/lib/debug/.build-id"
|
dst="$dst/lib/debug/.build-id"
|
||||||
|
|
||||||
# Find executables and dynamic libraries.
|
# Find executables and dynamic libraries.
|
||||||
local -a files=($(find "$prefix" -type f -a \( -perm /0100 -o -name "*.so" -o -name "*.so.*" \)))
|
|
||||||
|
|
||||||
local i magic
|
local i magic
|
||||||
for i in "${files[@]}"; do
|
while IFS= read -r -d $'\0' i; do
|
||||||
# Skip non-ELF files.
|
# Skip non-ELF files.
|
||||||
exec 10< "$i"
|
exec {fd}< "$i"
|
||||||
read -n 4 -u 10 magic
|
read -n 4 -u $fd magic
|
||||||
|
exec {fd}<&-
|
||||||
if ! [[ "$magic" =~ ELF ]]; then continue; fi
|
if ! [[ "$magic" =~ ELF ]]; then continue; fi
|
||||||
exec 10<&-
|
|
||||||
|
|
||||||
# Extract the Build ID. FIXME: there's probably a cleaner way.
|
# 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')"
|
local id="$(readelf -n "$i" | sed 's/.*Build ID: \([0-9a-f]*\).*/\1/; t; d')"
|
||||||
@ -36,7 +34,7 @@ _separateDebugInfo() {
|
|||||||
|
|
||||||
# Also a create a symlink <original-name>.debug.
|
# Also a create a symlink <original-name>.debug.
|
||||||
ln -sfn ".build-id/${id:0:2}/${id:2}.debug" "$dst/../$(basename "$i")"
|
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,
|
# - We might prefer to compress the debug info during link-time already,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user