diff --git a/ChangeLog b/ChangeLog
index f36e31e..efe392d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,9 @@
 	  enable debug options.
 	  Add a check for GNU Make and warn the user if it does not appear
 	  to be the make used.
+	  Check for Sun libc printstack(), add a general HAVE_STACK_TRACE
+	  define for lib/log.c, if any supported stack symbol dumping
+	  function is found (glibc backtrace/sun libc printstack).
 
 2006-05-10 Paul Jakma <paul.jakma@sun.com>
 
diff --git a/configure.ac b/configure.ac
index e173fca..37df36e 100755
--- a/configure.ac
+++ b/configure.ac
@@ -392,11 +392,15 @@
   | [*-solaris2.1[0-9]] \
   | [*-solaris2.1[0-9].[0-9]])
       opsys=sol8
-      AC_DEFINE(SUNOS_59,,SunOS 5.8 up)
-      AC_DEFINE(SUNOS_5, 1, SunOS 5)
+      AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
+      AC_DEFINE(SUNOS_5, 1, [SunOS 5])
       AC_CHECK_LIB(socket, main)
       AC_CHECK_LIB(nsl, main)
       AC_CHECK_LIB(umem, main)
+      AC_CHECK_FUNCS([printstack],
+      	[AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
+      	 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
+      	])
       CURSES=-lcurses
   ;;
   *-sunos5* | *-solaris2*)
@@ -1244,12 +1248,12 @@
 dnl check for glibc 'backtrace'
 dnl --------------------------- 
 if test "${glibc}" = "yes"; then
-   AC_CHECK_HEADER(execinfo.h)
-fi
-if test x"${ac_cv_header_execinfo_h}" = x"yes"; then
-  AC_CHECK_FUNC(backtrace,
-    [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,Glibc backtrace)]
-  )
+   AC_CHECK_HEADER([execinfo.h],
+    [AC_CHECK_FUNC([backtrace],
+    	[AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
+    	 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
+    	])
+    ])
 fi
 
 dnl -----------------------------------------
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 90ddd07..5d09636 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -7,6 +7,11 @@
 	  we still need it on GNU Libc for mallinfo().
 	* vty.c: (vty_log/vty_log_fixed) dont crash if called when vty
 	  hasn't been initiliased.
+	* log.c: (general) Add support for Sun libc printstack().
+	  (hex_append) make the cpp conditional on general HAVE_STACK_TRACE
+	  define.
+	  (zlog_backtrace_sigsafe) Ditto. Add printstack() version of the
+	  the DUMP macro in this function.
 
 2006-05-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
diff --git a/lib/log.c b/lib/log.c
index d55ffb7..3eb0bd5 100644
--- a/lib/log.c
+++ b/lib/log.c
@@ -1,5 +1,5 @@
 /*
- * $Id: log.c,v 1.27 2006/05/15 16:56:51 paul Exp $
+ * $Id$
  *
  * Logging of zebra
  * Copyright (C) 1997, 1998, 1999 Kunihiro Ishiguro
@@ -179,7 +179,7 @@
   return str_append(s,len,t);
 }
 
-#if defined(SA_SIGINFO) || defined(HAVE_GLIBC_BACKTRACE)
+#if defined(SA_SIGINFO) || defined(HAVE_STACK_TRACE)
 static char *
 hex_append(char *s, int len, u_long x)
 {
@@ -371,7 +371,7 @@
 void
 zlog_backtrace_sigsafe(int priority, void *program_counter)
 {
-#ifdef HAVE_GLIBC_BACKTRACE
+#ifdef HAVE_STACK_TRACE
   static const char pclabel[] = "Program counter: ";
   void *array[20];
   int size;
@@ -379,13 +379,10 @@
   char *s;
 #define LOC s,buf+sizeof(buf)-s
 
+#ifdef HAVE_GLIBC_BACKTRACE
   if (((size = backtrace(array,sizeof(array)/sizeof(array[0]))) <= 0) ||
       ((size_t)size > sizeof(array)/sizeof(array[0])))
     return;
-  s = buf;
-  s = str_append(LOC,"Backtrace for ");
-  s = num_append(LOC,size);
-  s = str_append(LOC," stack frames:\n");
 
 #define DUMP(FD) { \
   if (program_counter) \
@@ -396,6 +393,19 @@
   write(FD, buf, s-buf);	\
   backtrace_symbols_fd(array, size, FD); \
 }
+#elif defined(HAVE_PRINTSTACK)
+#define DUMP(FD) { \
+  if (program_counter) \
+    write((FD), pclabel, sizeof(pclabel)-1); \
+  write((FD), buf, s-buf); \
+  printstack((FD)); \
+}
+#endif /* HAVE_GLIBC_BACKTRACE, HAVE_PRINTSTACK */
+
+  s = buf;
+  s = str_append(LOC,"Backtrace for ");
+  s = num_append(LOC,size);
+  s = str_append(LOC," stack frames:\n");
 
   if ((logfile_fd >= 0) || ((logfile_fd = open_crashlog()) >= 0))
     DUMP(logfile_fd)
@@ -431,7 +441,7 @@
     }
 #undef DUMP
 #undef LOC
-#endif /* HAVE_GLIBC_BACKTRACE */
+#endif /* HAVE_STRACK_TRACE */
 }
 
 void
