[Groonga-commit] groonga/groonga [master] check backtrace() availability for *BSD.

Back to archive index

null+****@clear***** null+****@clear*****
2011年 6月 14日 (火) 23:35:16 JST


Kouhei Sutou	2011-06-14 14:35:16 +0000 (Tue, 14 Jun 2011)

  New Revision: 6aaf16583233947f8dda7e3b1d04a75a8d90530d

  Log:
    check backtrace() availability for *BSD.

  Modified files:
    configure.ac
    lib/ctx.c
    lib/ctx.h

  Modified: configure.ac (+1 -1)
===================================================================
--- configure.ac    2011-06-14 14:26:40 +0000 (aa4aabd)
+++ configure.ac    2011-06-14 14:35:16 +0000 (58cf338)
@@ -170,7 +170,7 @@ AC_CHECK_HEADERS(sys/mman.h sys/time.h sys/timeb.h sys/param.h sys/types.h sys/r
 AC_CHECK_HEADERS(netdb.h sys/wait.h sys/socket.h netinet/in.h netinet/tcp.h)
 AC_CHECK_HEADERS(ucontext.h signal.h errno.h execinfo.h sys/sysctl.h)
 AC_CHECK_HEADERS(time.h)
-AC_CHECK_FUNCS(localtime_r gmtime_r)
+AC_CHECK_FUNCS(localtime_r gmtime_r backtrace)
 AC_CHECK_LIB(rt, clock_gettime, [
   RT_LIBS="-lrt"
   AC_DEFINE(HAVE_CLOCK_GETTIME, [1], [use clock_gettime])

  Modified: lib/ctx.c (+3 -3)
===================================================================
--- lib/ctx.c    2011-06-14 14:26:40 +0000 (2cf386c)
+++ lib/ctx.c    2011-06-14 14:35:16 +0000 (e26f7a9)
@@ -2499,7 +2499,7 @@ segv_handler(int signal_number, siginfo_t *info, void *context)
   segv_received = 1;
 
   GRN_LOG(ctx, GRN_LOG_CRIT, "-- CRASHED!!! --");
-#ifdef HAVE_EXECINFO_H
+#ifdef HAVE_BACKTRACE
 #  define N_TRACE_LEVEL 1024
   {
     static void *trace[N_TRACE_LEVEL];
@@ -2514,9 +2514,9 @@ segv_handler(int signal_number, siginfo_t *info, void *context)
       free(symbols);
     }
   }
-#else
+#else /* HAVE_BACKTRACE */
   GRN_LOG(ctx, GRN_LOG_CRIT, "backtrace() isn't available.");
-#endif
+#endif /* HAVE_BACKTRACE */
   GRN_LOG(ctx, GRN_LOG_CRIT, "----------------");
   abort();
 }

  Modified: lib/ctx.h (+6 -6)
===================================================================
--- lib/ctx.h    2011-06-14 14:26:40 +0000 (0411b80)
+++ lib/ctx.h    2011-06-14 14:35:16 +0000 (453c355)
@@ -90,15 +90,15 @@ extern "C" {
   grn_gctx.rc = GRN_SUCCESS;\
 } while (0)
 
-#ifdef HAVE_EXECINFO_H
+#ifdef HAVE_BACKTRACE
 #define BACKTRACE(ctx) ((ctx)->ntrace = (unsigned char)backtrace((ctx)->trace, 16))
-#else /* HAVE_EXECINFO_H */
+#else /* HAVE_BACKTRACE */
 #define BACKTRACE(ctx)
-#endif /* HAVE_EXECINFO_H */
+#endif /* HAVE_BACKTRACE */
 
 GRN_API void grn_ctx_impl_err(grn_ctx *ctx);
 
-#ifdef HAVE_EXECINFO_H
+#ifdef HAVE_BACKTRACE
 #define LOGTRACE(ctx,lvl) {\
   int i;\
   char **p;\
@@ -115,9 +115,9 @@ GRN_API void grn_ctx_impl_err(grn_ctx *ctx);
   GRN_LOG((ctx), lvl, "%s", GRN_BULK_HEAD(&buf));\
   grn_obj_close((ctx), &buf);\
 }
-#else  /* HAVE_EXECINFO_H */
+#else  /* HAVE_BACKTRACE */
 #define LOGTRACE(ctx,msg)
-#endif /* HAVE_EXECINFO_H */
+#endif /* HAVE_BACKTRACE */
 
 #define ERRSET(ctx,lvl,r,...) do {\
   grn_ctx *ctx_ = (grn_ctx *)ctx;\




Groonga-commit メーリングリストの案内
Back to archive index