1e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall#!/bin/sh 2e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall# 3e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall# Test to see if backtrace requires a library in /usr/lib 4e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall# Returns true if the backtrace command works and requires a library in /usr/lib 5e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall# This is a nasty workaround for Debian bug #708307, which is really a glibc bug 6e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall# 7e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 8e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallcat > /tmp/backtrace$$.c << EOF 9e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 10e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall#include <execinfo.h> 11e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 12e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallint main(int argc, char **argv) 13e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall{ 14e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall void *stack_syms[32]; 15e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall int frames; 16e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 17e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall frames = backtrace(stack_syms, 32); 18e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall backtrace_symbols_fd(stack_syms, frames, 0); 19e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall} 20e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP AbgrallEOF 21e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 22e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif ! cc -o /tmp/backtrace$$ /tmp/backtrace$$.c; then 23e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall exit 1 24e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi 25e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 26e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif ! ldd /tmp/backtrace$$ > /tmp/backtrace$$.ldd 2>&1 ; then 27e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall exit 1 28e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi 29e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 30e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallgrep -q /usr/lib /tmp/backtrace$$.ldd 31e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallret=$? 32e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 33e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall/bin/rm -f /tmp/backtrace$$* 34e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallexit $ret 35