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