2 * This file is part of ltrace.
3 * Copyright (C) 2012 Petr Machata, Red Hat Inc.
4 * Copyright (C) 2009,2010 Joe Damato
5 * Copyright (C) 1998,2002,2008 Juan Cespedes
6 * Copyright (C) 2006 Ian Wienand
7 * Copyright (C) 2006 Steve Fink
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License as
11 * published by the Free Software Foundation; either version 2 of the
12 * License, or (at your option) any later version.
14 * This program is distributed in the hope that it will be useful, but
15 * WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
28 #include <sys/types.h>
35 int align; /* -a: default alignment column for results */
36 char * user; /* -u: username to run command as */
37 int syscalls; /* -S: display system calls */
38 int demangle; /* -C: demangle low-level names into user-level names */
39 int indent; /* -n: indent trace output according to program flow */
40 FILE *output; /* output to a specific file */
41 int summary; /* count time, calls, and report a summary on program exit */
42 int debug; /* debug */
43 size_t arraylen; /* default maximum # of array elements printed */
44 size_t strlen; /* default maximum # of bytes printed in strings */
45 int follow; /* trace child processes */
46 int no_signals; /* don't print signals */
47 #if defined(HAVE_LIBUNWIND)
48 int bt_depth; /* how may levels of stack frames to show */
49 #endif /* defined(HAVE_LIBUNWIND) */
50 struct filter *plt_filter;
51 struct filter *static_filter;
53 /* A filter matching library names of libraries, whose
54 * exported symbols we wish to trace. */
55 struct filter *export_filter;
57 int hide_caller; /* Whether caller library should be hidden. */
59 extern struct options_t options;
61 extern int opt_i; /* instruction pointer */
62 extern int opt_r; /* print relative timestamp */
63 extern int opt_t; /* print absolute timestamp */
64 extern int opt_T; /* show the time spent inside each call */
71 extern struct opt_p_t *opt_p; /* attach to process with a given pid */
83 enum opt_F_kind kind : 2;
86 /* If entry->kind is OPT_F_UNKNOWN, figure out whether it should be
87 * OPT_F_FILE or OPT_F_DIR, cache the result, and return it. Return
88 * OPT_F_BROKEN on failure. Error message will have been printed in
90 enum opt_F_kind opt_F_get_kind(struct opt_F_t *entry);
92 /* Destroy and release any memory associated with ENTRY (but don't
93 * free ENTRY itself). */
94 void opt_F_destroy(struct opt_F_t *entry);
96 /* PATHS contains colon-separated list of values, akin to enviroment
97 * variables PATH, PYTHONPATH, and others. No escaping is possible.
98 * The list is split and added to VEC, which shall be a vector
99 * initialized like VECT_INIT(VEC, struct opt_F_t); Returns 0 on
100 * success or a negative value on failure. */
101 int parse_colon_separated_list(const char *paths, struct vect *vec);
103 /* Vector of struct opt_F_t. */
104 extern struct vect opt_F;
106 struct opt_c_struct {
110 extern struct dict *dict_opt_c;
112 extern char **process_options(int argc, char **argv);
114 #endif /* _OPTIONS_H_ */