Signed-off-by: Vegard Nossum <[email protected]>
---
arch/x86/backtrace.c | 29 ++++++++++++++++++++---------
1 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/arch/x86/backtrace.c b/arch/x86/backtrace.c
index 9309da8..6b2dde4 100644
--- a/arch/x86/backtrace.c
+++ b/arch/x86/backtrace.c
@@ -29,6 +29,7 @@
#include <bfd.h>
#include <execinfo.h>
#include <signal.h>
+#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -52,8 +53,9 @@ static asymbol *lookup_symbol(asymbol ** symbols, int
nr_symbols,
return NULL;
}
-static void show_function(void *addr)
+static bool show_exe_function(void *addr)
{
+ bool ret;
const char *function_name;
bfd_vma symbol_offset;
bfd_vma symbol_start;
@@ -92,7 +94,7 @@ static void show_function(void *addr)
goto failed;
if (!bfd_find_nearest_line
- (abfd, sections, symbols, (unsigned long)addr, &filename,
+ (abfd, sections, symbols, (unsigned long) addr, &filename,
&function_name, &line))
goto failed;
@@ -101,23 +103,32 @@ static void show_function(void *addr)
goto failed;
symbol_start = bfd_asymbol_value(symbol);
- symbol_offset = (unsigned long)addr - symbol_start;
+ symbol_offset = (unsigned long) addr - symbol_start;
- printf(" [<%08lx>] %s+%llx (%s:%i)\n", (unsigned long) addr,
function_name,
- (long long) symbol_offset, filename, line);
+ printf(" [<%08lx>] %s+%llx (%s:%i)\n", (unsigned long) addr,
+ function_name, (long long) symbol_offset, filename, line);
+ ret = true;
- out:
+out:
free(symbols);
if (abfd)
bfd_close(abfd);
- return;
+ return ret;
- failed:
- printf(" [<%08lx>] <unknown>\n", (unsigned long) addr);
+failed:
+ ret = false;
goto out;
}
+static void show_function(void *addr)
+{
+ if (show_exe_function(addr))
+ return;
+
+ printf(" [<%08lx> <unknown>]\n", (unsigned long) addr);
+}
+
/* Must be inline so this does not change the backtrace. */
static inline void __show_stack_trace(unsigned long start, unsigned long
caller)
{
--
1.6.0.6
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
Jatovm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jatovm-devel