mirror of
https://git.proxmox.com/git/rustc
synced 2025-05-02 15:13:48 +00:00
76 lines
2.1 KiB
Bash
Executable File
76 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Debuglink tests.
|
|
# We build crates/debuglink and then move its debuginfo around
|
|
# and test that it can still find the debuginfo.
|
|
|
|
set -ex
|
|
|
|
cratedir=`pwd`/crates/debuglink
|
|
exefile=crates/debuglink/target/debug/debuglink
|
|
|
|
# Baseline; no separate debug
|
|
cargo build --manifest-path crates/debuglink/Cargo.toml
|
|
$exefile $cratedir
|
|
|
|
# Separate debug in same dir
|
|
debugfile1=`dirname $exefile`/debuglink.debug
|
|
objcopy --only-keep-debug $exefile $debugfile1
|
|
strip -g $exefile
|
|
(cd `dirname $exefile` && objcopy --add-gnu-debuglink=debuglink.debug debuglink)
|
|
$exefile $cratedir
|
|
|
|
# Separate debug in .debug subdir
|
|
debugfile2=`dirname $exefile`/.debug/debuglink.debug
|
|
mkdir -p `dirname $debugfile2`
|
|
mv $debugfile1 $debugfile2
|
|
$exefile $cratedir
|
|
|
|
# Separate debug in /usr/lib/debug subdir
|
|
debugfile3="/usr/lib/debug/$cratedir/target/debug/debuglink.debug"
|
|
mkdir -p `dirname $debugfile3`
|
|
mv $debugfile2 $debugfile3
|
|
$exefile $cratedir
|
|
|
|
# Separate debug in /usr/lib/debug/.build-id subdir
|
|
id=`readelf -n $exefile | grep '^ Build ID: [0-9a-f]' | cut -b 15-`
|
|
idfile="/usr/lib/debug/.build-id/${id:0:2}/${id:2}.debug"
|
|
mkdir -p `dirname $idfile`
|
|
mv $debugfile3 $idfile
|
|
$exefile $cratedir
|
|
|
|
# Replace idfile with a symlink (this is the usual arrangement)
|
|
mv $idfile $debugfile3
|
|
ln -s $debugfile3 $idfile
|
|
$exefile $cratedir
|
|
|
|
# Supplementary object file using relative path
|
|
dwzfile="/usr/lib/debug/.dwz/debuglink.debug"
|
|
mkdir -p `dirname $dwzfile`
|
|
cp $debugfile3 $debugfile3.copy
|
|
dwz -m $dwzfile -rh $debugfile3 $debugfile3.copy
|
|
rm $debugfile3.copy
|
|
$exefile $cratedir
|
|
|
|
# Supplementary object file using build ID
|
|
dwzid=`readelf -n $dwzfile | grep '^ Build ID: [0-9a-f]' | cut -b 15-`
|
|
dwzidfile="/usr/lib/debug/.build-id/${dwzid:0:2}/${dwzid:2}.debug"
|
|
mkdir -p `dirname $dwzidfile`
|
|
mv $dwzfile $dwzidfile
|
|
$exefile $cratedir
|
|
mv $dwzidfile $dwzfile
|
|
|
|
# Missing debug should fail
|
|
mv $debugfile3 $debugfile3.tmp
|
|
! $exefile $cratedir
|
|
mv $debugfile3.tmp $debugfile3
|
|
|
|
# Missing dwz should fail
|
|
mv $dwzfile $dwzfile.tmp
|
|
! $exefile $cratedir
|
|
mv $dwzfile.tmp $dwzfile
|
|
|
|
# Cleanup
|
|
rm $idfile $debugfile3 $dwzfile
|
|
echo Success
|