Signed-off-by: Nicolas Morey-Chaisemartin <nmo...@kalray.eu>
---
 example/traffic_mgmt/odp_traffic_mgmt.c | 38 +++++++++++++++++++++++++--------
 1 file changed, 29 insertions(+), 9 deletions(-)

diff --git a/example/traffic_mgmt/odp_traffic_mgmt.c 
b/example/traffic_mgmt/odp_traffic_mgmt.c
index c4f5356..55add9d 100644
--- a/example/traffic_mgmt/odp_traffic_mgmt.c
+++ b/example/traffic_mgmt/odp_traffic_mgmt.c
@@ -11,7 +11,9 @@
 #include <unistd.h>
 #include <signal.h>
 #include <sys/resource.h>
+#ifdef HAVE_BACKTRACE
 #include <execinfo.h>
+#endif
 #include <odp_api.h>
 #include <example_debug.h>
 
@@ -710,11 +712,10 @@ static int process_cmd_line_options(uint32_t argc, char 
*argv[])
        return 0;
 }
 
+#ifdef HAVE_SIGACTION
 static void signal_handler(int signal)
 {
-       size_t num_stack_frames;
        const char  *signal_name;
-       void  *bt_array[128];
 
        switch (signal) {
        case SIGILL:
@@ -731,22 +732,34 @@ static void signal_handler(int signal)
                signal_name = "UNKNOWN";  break;
        }
 
-       num_stack_frames = backtrace(bt_array, 100);
        printf("Received signal=%u (%s) exiting.", signal, signal_name);
-       backtrace_symbols_fd(bt_array, num_stack_frames, fileno(stderr));
+#ifdef HAVE_BACKTRACE
+       {
+               size_t num_stack_frames;
+               void  *bt_array[128];
+
+               num_stack_frames = backtrace(bt_array, 100);
+               backtrace_symbols_fd(bt_array, num_stack_frames,
+                                    fileno(stderr));
+       }
+#endif
        fflush(NULL);
+#ifdef HAVE_SYNC
        sync();
+#endif
        abort();
 }
+#endif
 
 int main(int argc, char *argv[])
 {
-       struct sigaction signal_action;
-       struct rlimit    rlimit;
        uint32_t pkts_into_tm, pkts_from_tm;
        odp_instance_t instance;
        int rc;
 
+#ifdef HAVE_SIGACTION
+       struct sigaction signal_action;
+
        memset(&signal_action, 0, sizeof(signal_action));
        signal_action.sa_handler = signal_handler;
        sigfillset(&signal_action.sa_mask);
@@ -755,10 +768,17 @@ int main(int argc, char *argv[])
        sigaction(SIGSEGV, &signal_action, NULL);
        sigaction(SIGTERM, &signal_action, NULL);
        sigaction(SIGBUS,  &signal_action, NULL);
+#endif
+
+#if defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT)
+       {
+               struct rlimit    rlimit;
 
-       getrlimit(RLIMIT_CORE, &rlimit);
-       rlimit.rlim_cur = rlimit.rlim_max;
-       setrlimit(RLIMIT_CORE, &rlimit);
+               getrlimit(RLIMIT_CORE, &rlimit);
+               rlimit.rlim_cur = rlimit.rlim_max;
+               setrlimit(RLIMIT_CORE, &rlimit);
+       }
+#endif
 
        rc = odp_init_global(&instance, &ODP_INIT_PARAMS, NULL);
        if (rc != 0) {
-- 
2.10.1.4.g0ffc436


Reply via email to