From 513c888595db021c8eaed77a2438301b1c306885 Mon Sep 17 00:00:00 2001 From: Arnaud Versini Date: Fri, 18 Nov 2011 19:57:16 +0100 Subject: Remove internal backtrace and backtrace_symbols_fd --- sal/osl/unx/backtrace.c | 81 ------------------------------------------------- sal/osl/unx/backtrace.h | 23 ++------------ 2 files changed, 2 insertions(+), 102 deletions(-) (limited to 'sal') diff --git a/sal/osl/unx/backtrace.c b/sal/osl/unx/backtrace.c index d5e4e94afaa4..01ff18f3713b 100644 --- a/sal/osl/unx/backtrace.c +++ b/sal/osl/unx/backtrace.c @@ -211,87 +211,6 @@ void backtrace_symbols_fd( void **buffer, int size, int fd ) #define _GNU_SOURCE #endif -#include -#include -#include -#include -#include "backtrace.h" - -#if defined(SPARC) - -#define FRAME_PTR_OFFSET 1 -#define FRAME_OFFSET 0 - -#else - -#error Unknown Linux target platform. - -#endif /* defined SPARC or INTEL */ - -typedef int ptrdiff_t; - -int backtrace( void **buffer, int max_frames ) -{ - struct frame *fp; - jmp_buf ctx; - int i; - - /* flush register windows */ -#ifdef SPARC - asm("ta 3"); -#endif - /* get stack- and framepointer */ - setjmp(ctx); - fp = (struct frame*)(((size_t*)(ctx))[FRAME_PTR_OFFSET]); - for ( i=0; (ifr_savfp; - - /* iterate through backtrace */ - for (i=0; fp && fp->fr_savpc && ifr_savpc; - /* next frame */ - fp=fp->fr_savfp; - } - return i; -} - -void backtrace_symbols_fd( void **buffer, int size, int fd ) -{ - FILE *fp = fdopen( fd, "w" ); - - if ( fp ) - { - void **pFramePtr; - - for ( pFramePtr = buffer; size > 0 && pFramePtr && *pFramePtr; pFramePtr++, size-- ) - { - Dl_info dli; - - if ( 0 != dladdr( *pFramePtr, &dli ) ) - { - ptrdiff_t offset; - - if ( dli.dli_fname && dli.dli_fbase ) - { - offset = (ptrdiff_t)*pFramePtr - (ptrdiff_t)dli.dli_fbase; - fprintf( fp, "%s+0x%x", dli.dli_fname, offset ); - } - if ( dli.dli_sname && dli.dli_saddr ) - { - offset = (ptrdiff_t)*pFramePtr - (ptrdiff_t)dli.dli_saddr; - fprintf( fp, "(%s+0x%x)", dli.dli_sname, offset ); - } - } - fprintf( fp, "[0x%x]\n", *pFramePtr ); - } - - fflush( fp ); - fclose( fp ); - } -} - #endif /* defined LINUX */ #if defined( MACOSX ) diff --git a/sal/osl/unx/backtrace.h b/sal/osl/unx/backtrace.h index 79fb58025e2e..61d63ec94d4a 100644 --- a/sal/osl/unx/backtrace.h +++ b/sal/osl/unx/backtrace.h @@ -58,27 +58,8 @@ struct frame { #endif /* defined SOLARIS || FREEBSD || NETBSD || OPENBSD */ -#if defined (LINUX) && defined (SPARC) -#ifdef __cplusplus -extern "C" { -#endif - -/* backtrace function with same behaviour as defined in GNU libc */ - -int backtrace( void **buffer, int max_frames ); - -void backtrace_symbols_fd( void **buffer, int size, int fd ); - -/* no frame.h on linux sparc */ -struct frame { - long arg0[8]; - long arg1[6]; - struct frame *fr_savfp; - long fr_savpc; -}; - -#ifdef __cplusplus -} /* extern "C" */ +#if defined (LINUX) +#include #endif #endif /* defined LINUX && SPARC */ -- cgit