/*
* This file is part of ltrace.
- * Copyright (C) 2010,2011,2012,2013 Petr Machata, Red Hat Inc.
+ * Copyright (C) 2010,2011,2012,2013,2014 Petr Machata, Red Hat Inc.
* Copyright (C) 2010 Joe Damato
* Copyright (C) 1998,2001,2008,2009 Juan Cespedes
*
#include <sys/time.h>
#include <stdint.h>
+#if defined(HAVE_LIBDW)
+# include <elfutils/libdwfl.h>
+#endif
+
#if defined(HAVE_LIBUNWIND)
# include <libunwind.h>
+# include <libunwind-ptrace.h>
#endif /* defined(HAVE_LIBUNWIND) */
#include "ltrace.h"
} c_un;
int is_syscall;
arch_addr_t return_addr;
- struct timeval time_spent;
+ struct timeval enter_time;
struct fetch_context *fetch_context;
struct value_dict *arguments;
struct output_state out;
short e_machine;
char e_class;
+#if defined(HAVE_LIBDW)
+ /* Unwind info for leader, NULL for non-leader procs. */
+ Dwfl *dwfl;
+#endif /* defined(HAVE_LIBDW) */
+
#if defined(HAVE_LIBUNWIND)
/* libunwind address space */
unw_addr_space_t unwind_as;
/* Iterate through the breakpoints of PROC. See callback.h for notes
* on iteration interfaces. */
-void *proc_each_breakpoint(struct process *proc, void *start,
- enum callback_status (*cb)(struct process *proc,
- struct breakpoint *bp,
- void *data),
- void *data);
+arch_addr_t *proc_each_breakpoint(struct process *proc, arch_addr_t *start,
+ enum callback_status (*cb)
+ (struct process *proc,
+ struct breakpoint *bp,
+ void *data),
+ void *data);
/* Iterate through the dynamic section at src_addr looking for D_TAG.
* If tag is found, fill it's value in RET and return 0.