xref: /aosp_15_r20/external/e2fsprogs/debian/scripts/test-backtrace (revision 6a54128f25917bfc36a8a6e9d722c04a0b4641b6)
1*6a54128fSAndroid Build Coastguard Worker#!/bin/sh
2*6a54128fSAndroid Build Coastguard Worker#
3*6a54128fSAndroid Build Coastguard Worker# Test to see if backtrace requires a library in /usr/lib
4*6a54128fSAndroid Build Coastguard Worker# Returns true if the backtrace command works and requires a library in /usr/lib
5*6a54128fSAndroid Build Coastguard Worker# This is a nasty workaround for Debian bug #708307, which is really a glibc bug
6*6a54128fSAndroid Build Coastguard Worker#
7*6a54128fSAndroid Build Coastguard Worker
8*6a54128fSAndroid Build Coastguard Workercat > /tmp/backtrace$$.c << EOF
9*6a54128fSAndroid Build Coastguard Worker
10*6a54128fSAndroid Build Coastguard Worker#include <execinfo.h>
11*6a54128fSAndroid Build Coastguard Worker
12*6a54128fSAndroid Build Coastguard Workerint main(int argc, char **argv)
13*6a54128fSAndroid Build Coastguard Worker{
14*6a54128fSAndroid Build Coastguard Worker       void *stack_syms[32];
15*6a54128fSAndroid Build Coastguard Worker       int frames;
16*6a54128fSAndroid Build Coastguard Worker
17*6a54128fSAndroid Build Coastguard Worker       frames = backtrace(stack_syms, 32);
18*6a54128fSAndroid Build Coastguard Worker       backtrace_symbols_fd(stack_syms, frames, 0);
19*6a54128fSAndroid Build Coastguard Worker}
20*6a54128fSAndroid Build Coastguard WorkerEOF
21*6a54128fSAndroid Build Coastguard Worker
22*6a54128fSAndroid Build Coastguard Workerif ! cc -o /tmp/backtrace$$ /tmp/backtrace$$.c; then
23*6a54128fSAndroid Build Coastguard Worker   exit 1
24*6a54128fSAndroid Build Coastguard Workerfi
25*6a54128fSAndroid Build Coastguard Worker
26*6a54128fSAndroid Build Coastguard Workerif ! ldd /tmp/backtrace$$ > /tmp/backtrace$$.ldd 2>&1 ; then
27*6a54128fSAndroid Build Coastguard Worker   exit 1
28*6a54128fSAndroid Build Coastguard Workerfi
29*6a54128fSAndroid Build Coastguard Worker
30*6a54128fSAndroid Build Coastguard Workergrep -q /usr/lib /tmp/backtrace$$.ldd
31*6a54128fSAndroid Build Coastguard Workerret=$?
32*6a54128fSAndroid Build Coastguard Worker
33*6a54128fSAndroid Build Coastguard Worker/bin/rm -f /tmp/backtrace$$*
34*6a54128fSAndroid Build Coastguard Workerexit $ret
35