mirror of
https://github.com/sstefani/mtrace.git
synced 2025-12-06 16:56:41 +08:00
rename tool in mtrace-ng and new long dump option
remame the toll in mtrace-ng add new long dump optios, which shows also the libraries minor fixes
This commit is contained in:
parent
b5af310363
commit
ae85b3e514
30
HOWTO
30
HOWTO
@ -1,8 +1,8 @@
|
|||||||
The easiest way for using mtrace is simply run a program under the control of mtrace:
|
The easiest way for using mtrace-ng is simply run a program under the control of mtrace-ng:
|
||||||
|
|
||||||
mtrace -t -d 10 a.out
|
mtrace-ng -t -d 10 a.out
|
||||||
|
|
||||||
This will run a.out and records all memory allocations. When the program exits or mtrace is terminated, it dumps all open memory allocations for each different stack backtrace:
|
This will run a.out and records all memory allocations. When the program exits or mtrace-ng is terminated, it dumps all open memory allocations for each different stack backtrace:
|
||||||
|
|
||||||
.
|
.
|
||||||
.
|
.
|
||||||
@ -30,7 +30,7 @@ In this case you see for the last stack backtrace which calls malloc() by functi
|
|||||||
|
|
||||||
The default sort order is "allocations", which sorts the output by the number of open allocations. The lowest value is printed out first and the highest value at last. So the most interesting values are always in view. If you wish a different sort order und can pass a -S option, for example.
|
The default sort order is "allocations", which sorts the output by the number of open allocations. The lowest value is printed out first and the highest value at last. So the most interesting values are always in view. If you wish a different sort order und can pass a -S option, for example.
|
||||||
|
|
||||||
mtrace -t -d 10 -s usage a.out
|
mtrace-ng -t -d 10 -s usage a.out
|
||||||
|
|
||||||
This will sort by the total sum of bytes used:
|
This will sort by the total sum of bytes used:
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ Stack (mmap):
|
|||||||
[0x7ff0c9587b55] /lib64/libc.so.6 __libc_start_main
|
[0x7ff0c9587b55] /lib64/libc.so.6 __libc_start_main
|
||||||
[0x400b89] /home/stefani/mt/test/a.out _start
|
[0x400b89] /home/stefani/mt/test/a.out _start
|
||||||
|
|
||||||
So you can see that the last two stack backtraces both called mmap() from inside the pthread_create() function. But since there are two different backtrace stacks there will be not merged together (the first on is called by x.c:117 and the other by x.c:128). Lets assume for the above example the stack backtrace depth is set (to the not really useful) value of 1, then mtrace would output:
|
So you can see that the last two stack backtraces both called mmap() from inside the pthread_create() function. But since there are two different backtrace stacks there will be not merged together (the first on is called by x.c:117 and the other by x.c:128). Lets assume for the above example the stack backtrace depth is set (to the not really useful) value of 1, then mtrace-ng would output:
|
||||||
|
|
||||||
Stack (mmap):
|
Stack (mmap):
|
||||||
bytes used: 16785408
|
bytes used: 16785408
|
||||||
@ -83,21 +83,21 @@ In this case it is not possible to identifiy which function has been called pthr
|
|||||||
|
|
||||||
It is also possible to write the output to a file instead to stderr, for example:
|
It is also possible to write the output to a file instead to stderr, for example:
|
||||||
|
|
||||||
mtrace -t -d 10 -o /tmp/mtrace.out a.out
|
mtrace-ng -t -d 10 -o /tmp/mtrace-ng.out a.out
|
||||||
|
|
||||||
In this case the dump will written to /tmp/mtrace.out after the program exits or mtrace is terminated. Note that in the case the sort order is inverted, the highest value is written first to the file and the lowest value at last. So the most interesting values are always in view when opening the file with an editor.
|
In this case the dump will written to /tmp/mtrace-ng.out after the program exits or mtrace-ng is terminated. Note that in the case the sort order is inverted, the highest value is written first to the file and the lowest value at last. So the most interesting values are always in view when opening the file with an editor.
|
||||||
|
|
||||||
It is also possible to attach to an already running program:
|
It is also possible to attach to an already running program:
|
||||||
|
|
||||||
mtrace -t -d 10 -o /tmp/mtrace.out -p $(pidof -s a.out)
|
mtrace-ng -t -d 10 -o /tmp/mtrace-ng.out -p $(pidof -s a.out)
|
||||||
|
|
||||||
This is e.g. useful when you not want do trace the whole startup of the program or you want to test only a specific function of a program. Imaging a test scenario where a leak is assumed. So attached mtrace, run the tests (more then once is better) and then terminated mtrace by Ctrl-C. One of last dump stack backtraces should show the culprit.
|
This is e.g. useful when you not want do trace the whole startup of the program or you want to test only a specific function of a program. Imaging a test scenario where a leak is assumed. So attached mtrace-ng, run the tests (more then once is better) and then terminated mtrace-ng by Ctrl-C. One of last dump stack backtraces should show the culprit.
|
||||||
|
|
||||||
A more sophisticate way to find a memory leak is to scan for lost pointer values, e.g.
|
A more sophisticate way to find a memory leak is to scan for lost pointer values, e.g.
|
||||||
|
|
||||||
mtrace -a -s leaks -d 10 -o /tmp/mtrace.out -p $(pidof -s a.out)
|
mtrace-ng -a -s leaks -d 10 -o /tmp/mtrace-ng.out -p $(pidof -s a.out)
|
||||||
|
|
||||||
After attach and run the tests and terminating mtrace by Ctrl-C, the memory will be scanned for lost pointer. The dump output will then sorted by the number of leaked allocations:
|
After attach and run the tests and terminating mtrace-ng by Ctrl-C, the memory will be scanned for lost pointer. The dump output will then sorted by the number of leaked allocations:
|
||||||
|
|
||||||
process 12166 scanning 18 allocations
|
process 12166 scanning 18 allocations
|
||||||
process 12166
|
process 12166
|
||||||
@ -153,22 +153,22 @@ When no C++ Code is traced or when using the libstdc++ (which calls malloc() and
|
|||||||
There is also a server mode and a client with an command line interface. This is useful when you want get information during the runtime
|
There is also a server mode and a client with an command line interface. This is useful when you want get information during the runtime
|
||||||
of a program, for example:
|
of a program, for example:
|
||||||
|
|
||||||
mtrace -f -r 0.0.0.0 -w -s -d 10 a.out
|
mtrace-ng -f -r 0.0.0.0 -w -s -d 10 a.out
|
||||||
|
|
||||||
This start the client waiting for a client connection before running the program a.out.
|
This start the client waiting for a client connection before running the program a.out.
|
||||||
|
|
||||||
Then you can connect the client using an other terminal or on an other computer:
|
Then you can connect the client using an other terminal or on an other computer:
|
||||||
|
|
||||||
mtrace -r 127.0.0.1
|
mtrace-ng -r 127.0.0.1
|
||||||
memtrace info:
|
memtrace info:
|
||||||
follow fork: no
|
follow fork: no
|
||||||
follow exec: no
|
follow exec: no
|
||||||
verbose: no
|
verbose: no
|
||||||
do trace: yes
|
do trace: yes
|
||||||
stack depth: 10
|
stack depth: 10
|
||||||
memtrace>
|
mtrace>
|
||||||
|
|
||||||
No you can ask for help with the command "help", or dump the current state of the bookkeeping by using the command "dump".
|
No you can ask for help with the command "help", or dump the current state of the bookkeeping by using the command "dump".
|
||||||
|
|
||||||
For more information about the interactive mode see the manual page mtrace(1) section INTERACTIVE MODE.
|
For more information about the interactive mode see the manual page mtrace-ng(1) section INTERACTIVE MODE.
|
||||||
|
|
||||||
|
|||||||
14
Makefile.am
14
Makefile.am
@ -1,4 +1,4 @@
|
|||||||
# This file is part of mtrace.
|
# This file is part of mtrace-ng.
|
||||||
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
@ -33,7 +33,7 @@ AM_CPPFLAGS += \
|
|||||||
AM_LDFLAGS += \
|
AM_LDFLAGS += \
|
||||||
-Wl,--no-as-needed
|
-Wl,--no-as-needed
|
||||||
|
|
||||||
mtrace_SOURCES = \
|
mtrace_ng_SOURCES = \
|
||||||
breakpoint.c \
|
breakpoint.c \
|
||||||
common.c \
|
common.c \
|
||||||
debug.c \
|
debug.c \
|
||||||
@ -50,16 +50,16 @@ mtrace_SOURCES = \
|
|||||||
task.c \
|
task.c \
|
||||||
trace.c
|
trace.c
|
||||||
|
|
||||||
mtrace_LDADD = \
|
mtrace_ng_LDADD = \
|
||||||
$(libelf_LIBS) \
|
$(libelf_LIBS) \
|
||||||
sysdeps/libos.la
|
sysdeps/libos.la
|
||||||
|
|
||||||
if !DISABLE_CLIENT
|
if !DISABLE_CLIENT
|
||||||
mtrace_LDADD += libclient.la
|
mtrace_ng_LDADD += libclient.la
|
||||||
endif
|
endif
|
||||||
|
|
||||||
bin_PROGRAMS = \
|
bin_PROGRAMS = \
|
||||||
mtrace
|
mtrace-ng
|
||||||
|
|
||||||
noinst_HEADERS = \
|
noinst_HEADERS = \
|
||||||
backend.h \
|
backend.h \
|
||||||
@ -83,8 +83,8 @@ noinst_HEADERS = \
|
|||||||
thread.h \
|
thread.h \
|
||||||
trace.h
|
trace.h
|
||||||
|
|
||||||
dist_man1_MANS = mtrace.1
|
dist_man1_MANS = mtrace-ng.1
|
||||||
dist_man5_MANS = mtrace.conf.5
|
dist_man5_MANS = mtrace-ng.conf.5
|
||||||
|
|
||||||
dist_doc_DATA = COPYING CREDITS INSTALL README TODO HOWTO
|
dist_doc_DATA = COPYING CREDITS INSTALL README TODO HOWTO
|
||||||
|
|
||||||
|
|||||||
28
Makefile.in
28
Makefile.in
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
# This file is part of mtrace.
|
# This file is part of mtrace-ng.
|
||||||
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
@ -110,7 +110,7 @@ build_triplet = @build@
|
|||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
@DISABLE_CLIENT_FALSE@am__append_1 = client
|
@DISABLE_CLIENT_FALSE@am__append_1 = client
|
||||||
@DISABLE_CLIENT_FALSE@am__append_2 = libclient.la
|
@DISABLE_CLIENT_FALSE@am__append_2 = libclient.la
|
||||||
bin_PROGRAMS = mtrace$(EXEEXT)
|
bin_PROGRAMS = mtrace-ng$(EXEEXT)
|
||||||
subdir = .
|
subdir = .
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/config/m4/libtool.m4 \
|
||||||
@ -133,13 +133,13 @@ CONFIG_CLEAN_VPATH_FILES =
|
|||||||
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
|
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
|
||||||
"$(DESTDIR)$(man5dir)" "$(DESTDIR)$(docdir)"
|
"$(DESTDIR)$(man5dir)" "$(DESTDIR)$(docdir)"
|
||||||
PROGRAMS = $(bin_PROGRAMS)
|
PROGRAMS = $(bin_PROGRAMS)
|
||||||
am_mtrace_OBJECTS = breakpoint.$(OBJEXT) common.$(OBJEXT) \
|
am_mtrace_ng_OBJECTS = breakpoint.$(OBJEXT) common.$(OBJEXT) \
|
||||||
debug.$(OBJEXT) dict.$(OBJEXT) dwarf.$(OBJEXT) event.$(OBJEXT) \
|
debug.$(OBJEXT) dict.$(OBJEXT) dwarf.$(OBJEXT) event.$(OBJEXT) \
|
||||||
library.$(OBJEXT) main.$(OBJEXT) mtelf.$(OBJEXT) \
|
library.$(OBJEXT) main.$(OBJEXT) mtelf.$(OBJEXT) \
|
||||||
options.$(OBJEXT) rbtree.$(OBJEXT) report.$(OBJEXT) \
|
options.$(OBJEXT) rbtree.$(OBJEXT) report.$(OBJEXT) \
|
||||||
server.$(OBJEXT) task.$(OBJEXT) trace.$(OBJEXT)
|
server.$(OBJEXT) task.$(OBJEXT) trace.$(OBJEXT)
|
||||||
mtrace_OBJECTS = $(am_mtrace_OBJECTS)
|
mtrace_ng_OBJECTS = $(am_mtrace_ng_OBJECTS)
|
||||||
mtrace_DEPENDENCIES = sysdeps/libos.la $(am__append_2)
|
mtrace_ng_DEPENDENCIES = sysdeps/libos.la $(am__append_2)
|
||||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||||
am__v_lt_0 = --silent
|
am__v_lt_0 = --silent
|
||||||
@ -178,8 +178,8 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
|||||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||||
am__v_CCLD_1 =
|
am__v_CCLD_1 =
|
||||||
SOURCES = $(mtrace_SOURCES)
|
SOURCES = $(mtrace_ng_SOURCES)
|
||||||
DIST_SOURCES = $(mtrace_SOURCES)
|
DIST_SOURCES = $(mtrace_ng_SOURCES)
|
||||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||||
install-data-recursive install-dvi-recursive \
|
install-data-recursive install-dvi-recursive \
|
||||||
@ -436,7 +436,7 @@ top_builddir = @top_builddir@
|
|||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
ACLOCAL_AMFLAGS = -I config/m4
|
ACLOCAL_AMFLAGS = -I config/m4
|
||||||
SUBDIRS = sysdeps $(am__append_1) .
|
SUBDIRS = sysdeps $(am__append_1) .
|
||||||
mtrace_SOURCES = \
|
mtrace_ng_SOURCES = \
|
||||||
breakpoint.c \
|
breakpoint.c \
|
||||||
common.c \
|
common.c \
|
||||||
debug.c \
|
debug.c \
|
||||||
@ -453,7 +453,7 @@ mtrace_SOURCES = \
|
|||||||
task.c \
|
task.c \
|
||||||
trace.c
|
trace.c
|
||||||
|
|
||||||
mtrace_LDADD = $(libelf_LIBS) sysdeps/libos.la $(am__append_2)
|
mtrace_ng_LDADD = $(libelf_LIBS) sysdeps/libos.la $(am__append_2)
|
||||||
noinst_HEADERS = \
|
noinst_HEADERS = \
|
||||||
backend.h \
|
backend.h \
|
||||||
backtrace.h \
|
backtrace.h \
|
||||||
@ -476,8 +476,8 @@ noinst_HEADERS = \
|
|||||||
thread.h \
|
thread.h \
|
||||||
trace.h
|
trace.h
|
||||||
|
|
||||||
dist_man1_MANS = mtrace.1
|
dist_man1_MANS = mtrace-ng.1
|
||||||
dist_man5_MANS = mtrace.conf.5
|
dist_man5_MANS = mtrace-ng.conf.5
|
||||||
dist_doc_DATA = COPYING CREDITS INSTALL README TODO HOWTO
|
dist_doc_DATA = COPYING CREDITS INSTALL README TODO HOWTO
|
||||||
EXTRA_DIST =
|
EXTRA_DIST =
|
||||||
MAINTAINERCLEANFILES = \
|
MAINTAINERCLEANFILES = \
|
||||||
@ -605,9 +605,9 @@ clean-binPROGRAMS:
|
|||||||
echo " rm -f" $$list; \
|
echo " rm -f" $$list; \
|
||||||
rm -f $$list
|
rm -f $$list
|
||||||
|
|
||||||
mtrace$(EXEEXT): $(mtrace_OBJECTS) $(mtrace_DEPENDENCIES) $(EXTRA_mtrace_DEPENDENCIES)
|
mtrace-ng$(EXEEXT): $(mtrace_ng_OBJECTS) $(mtrace_ng_DEPENDENCIES) $(EXTRA_mtrace_ng_DEPENDENCIES)
|
||||||
@rm -f mtrace$(EXEEXT)
|
@rm -f mtrace-ng$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(mtrace_OBJECTS) $(mtrace_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(mtrace_ng_OBJECTS) $(mtrace_ng_LDADD) $(LIBS)
|
||||||
|
|
||||||
mostlyclean-compile:
|
mostlyclean-compile:
|
||||||
-rm -f *.$(OBJEXT)
|
-rm -f *.$(OBJEXT)
|
||||||
|
|||||||
18
README.md
18
README.md
@ -1,11 +1,11 @@
|
|||||||
Mtrace
|
Mtrace
|
||||||
------
|
------
|
||||||
|
|
||||||
mtrace is an interactive dynamic memory tracer, debugger and statistical analyses tool for C and C++, which intercepts, records and reports all kinds of dynamic memory allocations.
|
mtrace-ng is an interactive dynamic memory tracer, debugger and statistical analyses tool for C and C++, which intercepts, records and reports all kinds of dynamic memory allocations.
|
||||||
|
|
||||||
It supports the developer to get statistics about the memory usage and finding memory leaks in an arbitrate program. Since mtrace is using breakpoints for tracing the program, there is no need of modification of the source code nor any recompilation.
|
It supports the developer to get statistics about the memory usage and finding memory leaks in an arbitrate program. Since mtrace-ng is using breakpoints for tracing the program, there is no need of modification of the source code nor any recompilation.
|
||||||
|
|
||||||
The mtrace utility intercepts the following library calls:
|
The mtrace-ng utility intercepts the following library calls:
|
||||||
|
|
||||||
void *malloc(size_t size);
|
void *malloc(size_t size);
|
||||||
void free(void *ptr);
|
void free(void *ptr);
|
||||||
@ -34,24 +34,24 @@ The mtrace utility intercepts the following library calls:
|
|||||||
|
|
||||||
For each allocation a backtrace will be recorded. This backtrace allows to trace and identify the callers of an allocation function. The depth of this backtrace could be set by the -d option. Identical backtraces will be handled as one caller, since there is no way to distinguish the callers.
|
For each allocation a backtrace will be recorded. This backtrace allows to trace and identify the callers of an allocation function. The depth of this backtrace could be set by the -d option. Identical backtraces will be handled as one caller, since there is no way to distinguish the callers.
|
||||||
|
|
||||||
Unlike other dynamic memory tracer, mtrace is able to find no longer referenced memory allocation by scanning all writable memory mappings of the program against the pointer values of the allocations. If a pointer value of an open allocated memory block will not found on any aligned memory addresses, it will be marked and reported as leaked. The scan can take some time, depending on the size of the writeable memory mappings and the number of open allocations.
|
Unlike other dynamic memory tracer, mtrace-ng is able to find no longer referenced memory allocation by scanning all writable memory mappings of the program against the pointer values of the allocations. If a pointer value of an open allocated memory block will not found on any aligned memory addresses, it will be marked and reported as leaked. The scan can take some time, depending on the size of the writeable memory mappings and the number of open allocations.
|
||||||
|
|
||||||
The mtrace utility was designed to run in a very constrained environment, like small embedded systems. This is one of the reasons for a client/server architecture. The server runs on the target side and the interactive client runs on the host side, the communication is done via TCP. If server and client running on the same machine then the communication can be done via UNIX Domain Socket. Both sides can run on different architectures, address sizes and endianness, but for tracing 64 bit programs the client must be compiled as a 64 bit program. On the host side all binaries (including debug information) must be accessible, there is no need for debug information on the target side.
|
The mtrace-ng utility was designed to run in a very constrained environment, like small embedded systems. This is one of the reasons for a client/server architecture. The server runs on the target side and the interactive client runs on the host side, the communication is done via TCP. If server and client running on the same machine then the communication can be done via UNIX Domain Socket. Both sides can run on different architectures, address sizes and endianness, but for tracing 64 bit programs the client must be compiled as a 64 bit program. On the host side all binaries (including debug information) must be accessible, there is no need for debug information on the target side.
|
||||||
|
|
||||||
|
|
||||||
mtrace offers different kind of working modes. A non interactive mode, a server mode and a interactive client mode.
|
mtrace-ng offers different kind of working modes. A non interactive mode, a server mode and a interactive client mode.
|
||||||
|
|
||||||
Non interactive mode
|
Non interactive mode
|
||||||
--------------------
|
--------------------
|
||||||
The most common mode is the non interactive mode, which allows to run and/or attach to a process, similar to strace. mtrace will show all open allocations when the traced program exists or mtrace will be terminated.
|
The most common mode is the non interactive mode, which allows to run and/or attach to a process, similar to strace. mtrace-ng will show all open allocations when the traced program exists or mtrace-ng will be terminated.
|
||||||
|
|
||||||
Server mode
|
Server mode
|
||||||
-----------
|
-----------
|
||||||
For system with memory restrictions or for using in a cross architecture environment, mtrace offers a server mode which moves the memory bookkeeping and address resolution outside to a connected client. In this case the server must be started on target system where the program is executed. Then the client has to be started on the remote host system.
|
For system with memory restrictions or for using in a cross architecture environment, mtrace-ng offers a server mode which moves the memory bookkeeping and address resolution outside to a connected client. In this case the server must be started on target system where the program is executed. Then the client has to be started on the remote host system.
|
||||||
|
|
||||||
Interactive client mode
|
Interactive client mode
|
||||||
-----------------------
|
-----------------------
|
||||||
To get a more detailed information about the dynamic memory consumption mtrace can be started in an interactive mode. This mode is available for client mode or when attaching to a process. See the section INTERACTIVE MODE of the manual page mtrace(1) to learn more about the interactive commands in mtrace.
|
To get a more detailed information about the dynamic memory consumption mtrace-ng can be started in an interactive mode. This mode is available for client mode or when attaching to a process. See the section INTERACTIVE MODE of the manual page mtrace-ng(1) to learn more about the interactive commands in mtrace-ng.
|
||||||
|
|
||||||
|
|
||||||
Restrictions
|
Restrictions
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
@%:@! /bin/sh
|
@%:@! /bin/sh
|
||||||
@%:@ Guess values for system-dependent variables and create Makefiles.
|
@%:@ Guess values for system-dependent variables and create Makefiles.
|
||||||
@%:@ Generated by GNU Autoconf 2.69 for mtrace 0.3.
|
@%:@ Generated by GNU Autoconf 2.69 for mtrace-ng 0.4.
|
||||||
@%:@
|
@%:@
|
||||||
@%:@ Report bugs to <stefani@seibold.net>.
|
@%:@ Report bugs to <stefani@seibold.net>.
|
||||||
@%:@
|
@%:@
|
||||||
@ -588,10 +588,10 @@ MFLAGS=
|
|||||||
MAKEFLAGS=
|
MAKEFLAGS=
|
||||||
|
|
||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='mtrace'
|
PACKAGE_NAME='mtrace-ng'
|
||||||
PACKAGE_TARNAME='mtrace'
|
PACKAGE_TARNAME='mtrace-ng'
|
||||||
PACKAGE_VERSION='0.3'
|
PACKAGE_VERSION='0.4'
|
||||||
PACKAGE_STRING='mtrace 0.3'
|
PACKAGE_STRING='mtrace-ng 0.4'
|
||||||
PACKAGE_BUGREPORT='stefani@seibold.net'
|
PACKAGE_BUGREPORT='stefani@seibold.net'
|
||||||
PACKAGE_URL=''
|
PACKAGE_URL=''
|
||||||
|
|
||||||
@ -1329,7 +1329,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures mtrace 0.3 to adapt to many kinds of systems.
|
\`configure' configures mtrace-ng 0.4 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@ -1377,7 +1377,7 @@ Fine tuning of the installation directories:
|
|||||||
--infodir=DIR info documentation [DATAROOTDIR/info]
|
--infodir=DIR info documentation [DATAROOTDIR/info]
|
||||||
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
|
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
|
||||||
--mandir=DIR man documentation [DATAROOTDIR/man]
|
--mandir=DIR man documentation [DATAROOTDIR/man]
|
||||||
--docdir=DIR documentation root @<:@DATAROOTDIR/doc/mtrace@:>@
|
--docdir=DIR documentation root @<:@DATAROOTDIR/doc/mtrace-ng@:>@
|
||||||
--htmldir=DIR html documentation [DOCDIR]
|
--htmldir=DIR html documentation [DOCDIR]
|
||||||
--dvidir=DIR dvi documentation [DOCDIR]
|
--dvidir=DIR dvi documentation [DOCDIR]
|
||||||
--pdfdir=DIR pdf documentation [DOCDIR]
|
--pdfdir=DIR pdf documentation [DOCDIR]
|
||||||
@ -1399,7 +1399,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of mtrace 0.3:";;
|
short | recursive ) echo "Configuration of mtrace-ng 0.4:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@ -1518,7 +1518,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
mtrace configure 0.3
|
mtrace-ng configure 0.4
|
||||||
generated by GNU Autoconf 2.69
|
generated by GNU Autoconf 2.69
|
||||||
|
|
||||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
@ -2124,7 +2124,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by mtrace $as_me 0.3, which was
|
It was created by mtrace-ng $as_me 0.4, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
@ -12005,8 +12005,8 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='mtrace'
|
PACKAGE='mtrace-ng'
|
||||||
VERSION='0.3'
|
VERSION='0.4'
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
@ -13844,7 +13844,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by mtrace $as_me 0.3, which was
|
This file was extended by mtrace-ng $as_me 0.4, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@ -13910,7 +13910,7 @@ _ACEOF
|
|||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
mtrace config.status 0.3
|
mtrace-ng config.status 0.4
|
||||||
configured by $0, generated by GNU Autoconf 2.69,
|
configured by $0, generated by GNU Autoconf 2.69,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
@%:@! /bin/sh
|
@%:@! /bin/sh
|
||||||
@%:@ Guess values for system-dependent variables and create Makefiles.
|
@%:@ Guess values for system-dependent variables and create Makefiles.
|
||||||
@%:@ Generated by GNU Autoconf 2.69 for mtrace 0.3.
|
@%:@ Generated by GNU Autoconf 2.69 for mtrace-ng 0.4.
|
||||||
@%:@
|
@%:@
|
||||||
@%:@ Report bugs to <stefani@seibold.net>.
|
@%:@ Report bugs to <stefani@seibold.net>.
|
||||||
@%:@
|
@%:@
|
||||||
@ -588,10 +588,10 @@ MFLAGS=
|
|||||||
MAKEFLAGS=
|
MAKEFLAGS=
|
||||||
|
|
||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='mtrace'
|
PACKAGE_NAME='mtrace-ng'
|
||||||
PACKAGE_TARNAME='mtrace'
|
PACKAGE_TARNAME='mtrace-ng'
|
||||||
PACKAGE_VERSION='0.3'
|
PACKAGE_VERSION='0.4'
|
||||||
PACKAGE_STRING='mtrace 0.3'
|
PACKAGE_STRING='mtrace-ng 0.4'
|
||||||
PACKAGE_BUGREPORT='stefani@seibold.net'
|
PACKAGE_BUGREPORT='stefani@seibold.net'
|
||||||
PACKAGE_URL=''
|
PACKAGE_URL=''
|
||||||
|
|
||||||
@ -1329,7 +1329,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures mtrace 0.3 to adapt to many kinds of systems.
|
\`configure' configures mtrace-ng 0.4 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@ -1377,7 +1377,7 @@ Fine tuning of the installation directories:
|
|||||||
--infodir=DIR info documentation [DATAROOTDIR/info]
|
--infodir=DIR info documentation [DATAROOTDIR/info]
|
||||||
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
|
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
|
||||||
--mandir=DIR man documentation [DATAROOTDIR/man]
|
--mandir=DIR man documentation [DATAROOTDIR/man]
|
||||||
--docdir=DIR documentation root @<:@DATAROOTDIR/doc/mtrace@:>@
|
--docdir=DIR documentation root @<:@DATAROOTDIR/doc/mtrace-ng@:>@
|
||||||
--htmldir=DIR html documentation [DOCDIR]
|
--htmldir=DIR html documentation [DOCDIR]
|
||||||
--dvidir=DIR dvi documentation [DOCDIR]
|
--dvidir=DIR dvi documentation [DOCDIR]
|
||||||
--pdfdir=DIR pdf documentation [DOCDIR]
|
--pdfdir=DIR pdf documentation [DOCDIR]
|
||||||
@ -1399,7 +1399,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of mtrace 0.3:";;
|
short | recursive ) echo "Configuration of mtrace-ng 0.4:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@ -1518,7 +1518,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
mtrace configure 0.3
|
mtrace-ng configure 0.4
|
||||||
generated by GNU Autoconf 2.69
|
generated by GNU Autoconf 2.69
|
||||||
|
|
||||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
@ -2124,7 +2124,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by mtrace $as_me 0.3, which was
|
It was created by mtrace-ng $as_me 0.4, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
@ -12005,8 +12005,8 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='mtrace'
|
PACKAGE='mtrace-ng'
|
||||||
VERSION='0.3'
|
VERSION='0.4'
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
@ -13844,7 +13844,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by mtrace $as_me 0.3, which was
|
This file was extended by mtrace-ng $as_me 0.4, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@ -13910,7 +13910,7 @@ _ACEOF
|
|||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
mtrace config.status 0.3
|
mtrace-ng config.status 0.4
|
||||||
configured by $0, generated by GNU Autoconf 2.69,
|
configured by $0, generated by GNU Autoconf 2.69,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
@%:@! /bin/sh
|
@%:@! /bin/sh
|
||||||
@%:@ Guess values for system-dependent variables and create Makefiles.
|
@%:@ Guess values for system-dependent variables and create Makefiles.
|
||||||
@%:@ Generated by GNU Autoconf 2.69 for mtrace 0.3.
|
@%:@ Generated by GNU Autoconf 2.69 for mtrace-ng 0.4.
|
||||||
@%:@
|
@%:@
|
||||||
@%:@ Report bugs to <stefani@seibold.net>.
|
@%:@ Report bugs to <stefani@seibold.net>.
|
||||||
@%:@
|
@%:@
|
||||||
@ -588,10 +588,10 @@ MFLAGS=
|
|||||||
MAKEFLAGS=
|
MAKEFLAGS=
|
||||||
|
|
||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='mtrace'
|
PACKAGE_NAME='mtrace-ng'
|
||||||
PACKAGE_TARNAME='mtrace'
|
PACKAGE_TARNAME='mtrace-ng'
|
||||||
PACKAGE_VERSION='0.3'
|
PACKAGE_VERSION='0.4'
|
||||||
PACKAGE_STRING='mtrace 0.3'
|
PACKAGE_STRING='mtrace-ng 0.4'
|
||||||
PACKAGE_BUGREPORT='stefani@seibold.net'
|
PACKAGE_BUGREPORT='stefani@seibold.net'
|
||||||
PACKAGE_URL=''
|
PACKAGE_URL=''
|
||||||
|
|
||||||
@ -1329,7 +1329,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures mtrace 0.3 to adapt to many kinds of systems.
|
\`configure' configures mtrace-ng 0.4 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@ -1377,7 +1377,7 @@ Fine tuning of the installation directories:
|
|||||||
--infodir=DIR info documentation [DATAROOTDIR/info]
|
--infodir=DIR info documentation [DATAROOTDIR/info]
|
||||||
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
|
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
|
||||||
--mandir=DIR man documentation [DATAROOTDIR/man]
|
--mandir=DIR man documentation [DATAROOTDIR/man]
|
||||||
--docdir=DIR documentation root @<:@DATAROOTDIR/doc/mtrace@:>@
|
--docdir=DIR documentation root @<:@DATAROOTDIR/doc/mtrace-ng@:>@
|
||||||
--htmldir=DIR html documentation [DOCDIR]
|
--htmldir=DIR html documentation [DOCDIR]
|
||||||
--dvidir=DIR dvi documentation [DOCDIR]
|
--dvidir=DIR dvi documentation [DOCDIR]
|
||||||
--pdfdir=DIR pdf documentation [DOCDIR]
|
--pdfdir=DIR pdf documentation [DOCDIR]
|
||||||
@ -1399,7 +1399,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of mtrace 0.3:";;
|
short | recursive ) echo "Configuration of mtrace-ng 0.4:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@ -1518,7 +1518,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
mtrace configure 0.3
|
mtrace-ng configure 0.4
|
||||||
generated by GNU Autoconf 2.69
|
generated by GNU Autoconf 2.69
|
||||||
|
|
||||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
@ -2124,7 +2124,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by mtrace $as_me 0.3, which was
|
It was created by mtrace-ng $as_me 0.4, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
@ -12005,8 +12005,8 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='mtrace'
|
PACKAGE='mtrace-ng'
|
||||||
VERSION='0.3'
|
VERSION='0.4'
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
@ -13844,7 +13844,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by mtrace $as_me 0.3, which was
|
This file was extended by mtrace-ng $as_me 0.4, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@ -13910,7 +13910,7 @@ _ACEOF
|
|||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
mtrace config.status 0.3
|
mtrace-ng config.status 0.4
|
||||||
configured by $0, generated by GNU Autoconf 2.69,
|
configured by $0, generated by GNU Autoconf 2.69,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
|||||||
@ -42,186 +42,186 @@
|
|||||||
'configure.ac'
|
'configure.ac'
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
'AM_PROG_LIBTOOL' => 1,
|
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
|
||||||
'AM_MAINTAINER_MODE' => 1,
|
|
||||||
'_AM_AUTOCONF_VERSION' => 1,
|
|
||||||
'AC_PROG_EGREP' => 1,
|
|
||||||
'_LT_AC_TAGVAR' => 1,
|
|
||||||
'AM_RUN_LOG' => 1,
|
|
||||||
'_AM_PROG_TAR' => 1,
|
|
||||||
'AC_LIBLTDL_CONVENIENCE' => 1,
|
|
||||||
'LT_SUPPORTED_TAG' => 1,
|
|
||||||
'_LTDL_SETUP' => 1,
|
|
||||||
'AM_PROG_LD' => 1,
|
|
||||||
'_AM_IF_OPTION' => 1,
|
|
||||||
'AM_PROG_INSTALL_SH' => 1,
|
|
||||||
'LT_PATH_LD' => 1,
|
|
||||||
'_LT_LINKER_OPTION' => 1,
|
|
||||||
'AC_DEPLIBS_CHECK_METHOD' => 1,
|
|
||||||
'AC_LIBTOOL_DLOPEN' => 1,
|
|
||||||
'AC_CONFIG_MACRO_DIR' => 1,
|
|
||||||
'AC_LIB_LTDL' => 1,
|
|
||||||
'AM_DEP_TRACK' => 1,
|
|
||||||
'_LT_AC_SYS_COMPILER' => 1,
|
|
||||||
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
|
|
||||||
'LT_PATH_NM' => 1,
|
|
||||||
'AC_DEFUN_ONCE' => 1,
|
|
||||||
'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
|
|
||||||
'AM_INIT_AUTOMAKE' => 1,
|
|
||||||
'AC_DEFUN' => 1,
|
|
||||||
'LT_WITH_LTDL' => 1,
|
|
||||||
'_LT_AC_FILE_LTDLL_C' => 1,
|
|
||||||
'AC_PATH_TOOL_PREFIX' => 1,
|
|
||||||
'LT_LIB_DLLOAD' => 1,
|
|
||||||
'AC_LIBTOOL_COMPILER_OPTION' => 1,
|
|
||||||
'LT_AC_PROG_RC' => 1,
|
|
||||||
'AC_ENABLE_SHARED' => 1,
|
|
||||||
'_LT_AC_LANG_C_CONFIG' => 1,
|
|
||||||
'_LT_AC_LOCK' => 1,
|
|
||||||
'_LT_AC_SHELL_INIT' => 1,
|
|
||||||
'AM_ENABLE_SHARED' => 1,
|
|
||||||
'AC_PATH_MAGIC' => 1,
|
|
||||||
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
|
|
||||||
'_LT_AC_LANG_CXX' => 1,
|
|
||||||
'AC_CHECK_LIBM' => 1,
|
|
||||||
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
|
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
|
||||||
'AC_PROG_NM' => 1,
|
'_LT_AC_TAGVAR' => 1,
|
||||||
'AU_DEFUN' => 1,
|
|
||||||
'_LT_COMPILER_BOILERPLATE' => 1,
|
|
||||||
'AM_SILENT_RULES' => 1,
|
|
||||||
'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
|
|
||||||
'AM_SANITY_CHECK' => 1,
|
|
||||||
'AC_LTDL_ENABLE_INSTALL' => 1,
|
|
||||||
'AM_CONDITIONAL' => 1,
|
|
||||||
'_LT_LINKER_BOILERPLATE' => 1,
|
|
||||||
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
|
|
||||||
'LT_OUTPUT' => 1,
|
'LT_OUTPUT' => 1,
|
||||||
'LT_LIB_M' => 1,
|
|
||||||
'_AM_SET_OPTION' => 1,
|
|
||||||
'_LT_PROG_LTMAIN' => 1,
|
|
||||||
'AC_LTDL_PREOPEN' => 1,
|
|
||||||
'AM_PROG_CC_C_O' => 1,
|
|
||||||
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
|
|
||||||
'LT_SYS_SYMBOL_USCORE' => 1,
|
|
||||||
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
|
|
||||||
'_LT_AC_CHECK_DLFCN' => 1,
|
|
||||||
'AC_PROG_LD_RELOAD_FLAG' => 1,
|
|
||||||
'_LT_CC_BASENAME' => 1,
|
|
||||||
'AC_WITH_LTDL' => 1,
|
|
||||||
'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
|
|
||||||
'AC_DISABLE_FAST_INSTALL' => 1,
|
|
||||||
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
|
|
||||||
'_LT_AC_LANG_GCJ' => 1,
|
|
||||||
'AC_LIBTOOL_F77' => 1,
|
|
||||||
'AC_DISABLE_STATIC' => 1,
|
|
||||||
'_AM_DEPENDENCIES' => 1,
|
|
||||||
'AC_LIBTOOL_RC' => 1,
|
|
||||||
'AC_ENABLE_STATIC' => 1,
|
|
||||||
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
|
|
||||||
'AC_LTDL_SHLIBEXT' => 1,
|
|
||||||
'AC_LIBTOOL_OBJDIR' => 1,
|
|
||||||
'LT_CONFIG_LTDL_DIR' => 1,
|
|
||||||
'_AM_PROG_CC_C_O' => 1,
|
|
||||||
'AC_LIBTOOL_SETUP' => 1,
|
|
||||||
'_LT_PROG_FC' => 1,
|
|
||||||
'AC_LIBTOOL_CXX' => 1,
|
|
||||||
'LT_SYS_MODULE_PATH' => 1,
|
|
||||||
'LT_PROG_GCJ' => 1,
|
|
||||||
'_LT_PROG_ECHO_BACKSLASH' => 1,
|
|
||||||
'm4_pattern_forbid' => 1,
|
|
||||||
'_AM_CONFIG_MACRO_DIRS' => 1,
|
|
||||||
'AM_SET_LEADING_DOT' => 1,
|
|
||||||
'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
|
|
||||||
'LT_INIT' => 1,
|
|
||||||
'_LT_AC_TAGCONFIG' => 1,
|
|
||||||
'AC_LIBTOOL_PROG_CC_C_O' => 1,
|
|
||||||
'AM_PROG_INSTALL_STRIP' => 1,
|
|
||||||
'AC_PROG_LD_GNU' => 1,
|
|
||||||
'AC_PROG_LIBTOOL' => 1,
|
|
||||||
'LT_LANG' => 1,
|
|
||||||
'LT_AC_PROG_EGREP' => 1,
|
|
||||||
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
|
|
||||||
'_LT_PROG_CXX' => 1,
|
|
||||||
'm4_include' => 1,
|
|
||||||
'LT_FUNC_ARGZ' => 1,
|
|
||||||
'_LT_COMPILER_OPTION' => 1,
|
|
||||||
'AM_SET_DEPDIR' => 1,
|
|
||||||
'AM_MISSING_PROG' => 1,
|
|
||||||
'LT_SYS_MODULE_EXT' => 1,
|
|
||||||
'AM_ENABLE_STATIC' => 1,
|
|
||||||
'LTOPTIONS_VERSION' => 1,
|
|
||||||
'LT_FUNC_DLSYM_USCORE' => 1,
|
|
||||||
'_LT_AC_LANG_F77' => 1,
|
|
||||||
'_LT_AC_PROG_CXXCPP' => 1,
|
|
||||||
'AM_PROG_NM' => 1,
|
|
||||||
'_LT_PATH_TOOL_PREFIX' => 1,
|
|
||||||
'LTVERSION_VERSION' => 1,
|
'LTVERSION_VERSION' => 1,
|
||||||
'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
|
|
||||||
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
|
|
||||||
'include' => 1,
|
|
||||||
'LTSUGAR_VERSION' => 1,
|
|
||||||
'AM_SUBST_NOTMAKE' => 1,
|
|
||||||
'_LT_AC_LANG_CXX_CONFIG' => 1,
|
|
||||||
'AC_LTDL_DLSYM_USCORE' => 1,
|
|
||||||
'_LT_AC_LANG_F77_CONFIG' => 1,
|
|
||||||
'_LT_PROG_F77' => 1,
|
|
||||||
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
|
|
||||||
'AM_AUX_DIR_EXPAND' => 1,
|
|
||||||
'AC_DISABLE_SHARED' => 1,
|
|
||||||
'_LT_AC_LANG_RC_CONFIG' => 1,
|
|
||||||
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
|
|
||||||
'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
|
|
||||||
'AC_LIBTOOL_LINKER_OPTION' => 1,
|
|
||||||
'_LT_WITH_SYSROOT' => 1,
|
|
||||||
'LTDL_INIT' => 1,
|
|
||||||
'LT_PROG_RC' => 1,
|
|
||||||
'AC_LIBTOOL_WIN32_DLL' => 1,
|
|
||||||
'AC_LIBTOOL_PICMODE' => 1,
|
|
||||||
'AM_DISABLE_SHARED' => 1,
|
|
||||||
'_LT_AC_SYS_LIBPATH_AIX' => 1,
|
|
||||||
'_LT_PREPARE_SED_QUOTE_VARS' => 1,
|
|
||||||
'AC_ENABLE_FAST_INSTALL' => 1,
|
|
||||||
'LT_AC_PROG_SED' => 1,
|
|
||||||
'_LT_LIBOBJ' => 1,
|
|
||||||
'LTOBSOLETE_VERSION' => 1,
|
|
||||||
'LT_SYS_DLOPEN_DEPLIBS' => 1,
|
|
||||||
'LT_PROG_GO' => 1,
|
|
||||||
'AC_LTDL_SHLIBPATH' => 1,
|
|
||||||
'_LT_REQUIRED_DARWIN_CHECKS' => 1,
|
|
||||||
'AC_LTDL_SYSSEARCHPATH' => 1,
|
|
||||||
'_LT_AC_LANG_GCJ_CONFIG' => 1,
|
|
||||||
'AC_LIBLTDL_INSTALLABLE' => 1,
|
|
||||||
'_AM_MANGLE_OPTION' => 1,
|
'_AM_MANGLE_OPTION' => 1,
|
||||||
|
'_AM_PROG_CC_C_O' => 1,
|
||||||
|
'LTOBSOLETE_VERSION' => 1,
|
||||||
|
'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
|
||||||
|
'AM_RUN_LOG' => 1,
|
||||||
|
'AC_LIBTOOL_WIN32_DLL' => 1,
|
||||||
|
'AC_PROG_LD_RELOAD_FLAG' => 1,
|
||||||
'_LT_DLL_DEF_P' => 1,
|
'_LT_DLL_DEF_P' => 1,
|
||||||
'm4_pattern_allow' => 1,
|
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
|
||||||
'AC_LTDL_DLLIB' => 1,
|
'AC_LTDL_ENABLE_INSTALL' => 1,
|
||||||
'_AC_PROG_LIBTOOL' => 1,
|
'LT_WITH_LTDL' => 1,
|
||||||
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
|
'AC_LTDL_DLSYM_USCORE' => 1,
|
||||||
'LT_SYS_DLOPEN_SELF' => 1,
|
'_LT_COMPILER_OPTION' => 1,
|
||||||
'LTDL_INSTALLABLE' => 1,
|
'LTSUGAR_VERSION' => 1,
|
||||||
'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
|
'AC_LIBTOOL_COMPILER_OPTION' => 1,
|
||||||
|
'LT_PATH_LD' => 1,
|
||||||
|
'AC_LTDL_SHLIBEXT' => 1,
|
||||||
|
'_LT_AC_SHELL_INIT' => 1,
|
||||||
|
'AM_SILENT_RULES' => 1,
|
||||||
|
'AM_PROG_LD' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
|
||||||
|
'_LT_WITH_SYSROOT' => 1,
|
||||||
|
'AC_DISABLE_FAST_INSTALL' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
|
||||||
|
'AC_PROG_EGREP' => 1,
|
||||||
|
'_LT_AC_SYS_COMPILER' => 1,
|
||||||
'LT_CMD_MAX_LEN' => 1,
|
'LT_CMD_MAX_LEN' => 1,
|
||||||
'_AM_SUBST_NOTMAKE' => 1,
|
'LTDL_INIT' => 1,
|
||||||
|
'AC_LIBLTDL_INSTALLABLE' => 1,
|
||||||
|
'AM_INIT_AUTOMAKE' => 1,
|
||||||
|
'AC_ENABLE_SHARED' => 1,
|
||||||
|
'LT_AC_PROG_EGREP' => 1,
|
||||||
|
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
|
||||||
|
'_LT_PROG_ECHO_BACKSLASH' => 1,
|
||||||
|
'AM_SUBST_NOTMAKE' => 1,
|
||||||
|
'_LT_REQUIRED_DARWIN_CHECKS' => 1,
|
||||||
|
'_LTDL_SETUP' => 1,
|
||||||
|
'AC_LIBTOOL_LINKER_OPTION' => 1,
|
||||||
|
'LT_PROG_GO' => 1,
|
||||||
|
'AM_DISABLE_STATIC' => 1,
|
||||||
|
'_LT_LINKER_BOILERPLATE' => 1,
|
||||||
|
'AM_PROG_LIBTOOL' => 1,
|
||||||
|
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
|
||||||
|
'AC_LTDL_SHLIBPATH' => 1,
|
||||||
|
'LT_LIB_M' => 1,
|
||||||
|
'AC_LIBLTDL_CONVENIENCE' => 1,
|
||||||
|
'LT_SYS_SYMBOL_USCORE' => 1,
|
||||||
|
'LT_FUNC_ARGZ' => 1,
|
||||||
|
'_LT_LIBOBJ' => 1,
|
||||||
|
'm4_pattern_forbid' => 1,
|
||||||
|
'AM_DISABLE_SHARED' => 1,
|
||||||
|
'_LT_AC_LANG_C_CONFIG' => 1,
|
||||||
|
'_LT_PROG_F77' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
|
||||||
|
'AM_PROG_NM' => 1,
|
||||||
|
'AC_CONFIG_MACRO_DIR' => 1,
|
||||||
|
'_LT_AC_LANG_GCJ_CONFIG' => 1,
|
||||||
|
'_LT_LINKER_OPTION' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
|
||||||
|
'AC_DISABLE_SHARED' => 1,
|
||||||
|
'LT_PROG_GCJ' => 1,
|
||||||
|
'AM_ENABLE_SHARED' => 1,
|
||||||
|
'AC_LIBTOOL_DLOPEN' => 1,
|
||||||
|
'_LT_AC_LOCK' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
|
||||||
|
'AC_PATH_TOOL_PREFIX' => 1,
|
||||||
|
'AC_CHECK_LIBM' => 1,
|
||||||
|
'AC_LIBTOOL_PICMODE' => 1,
|
||||||
|
'AU_DEFUN' => 1,
|
||||||
|
'_AM_SET_OPTIONS' => 1,
|
||||||
|
'_LT_AC_TRY_DLOPEN_SELF' => 1,
|
||||||
|
'LT_AC_PROG_SED' => 1,
|
||||||
|
'AC_DEFUN_ONCE' => 1,
|
||||||
|
'AC_WITH_LTDL' => 1,
|
||||||
|
'AC_LIBTOOL_DLOPEN_SELF' => 1,
|
||||||
|
'AC_LIBTOOL_SETUP' => 1,
|
||||||
|
'_LT_CC_BASENAME' => 1,
|
||||||
|
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
|
||||||
|
'_LT_AC_CHECK_DLFCN' => 1,
|
||||||
|
'_LT_PREPARE_SED_QUOTE_VARS' => 1,
|
||||||
|
'AC_LIBTOOL_CXX' => 1,
|
||||||
|
'AC_LIBTOOL_GCJ' => 1,
|
||||||
|
'LT_SYS_DLOPEN_SELF' => 1,
|
||||||
|
'LT_PROG_RC' => 1,
|
||||||
|
'AC_DEPLIBS_CHECK_METHOD' => 1,
|
||||||
|
'LT_AC_PROG_RC' => 1,
|
||||||
|
'AC_PROG_LD_GNU' => 1,
|
||||||
|
'LT_AC_PROG_GCJ' => 1,
|
||||||
|
'm4_include' => 1,
|
||||||
|
'AC_LTDL_SYSSEARCHPATH' => 1,
|
||||||
|
'AM_PROG_INSTALL_SH' => 1,
|
||||||
|
'_LT_AC_PROG_CXXCPP' => 1,
|
||||||
|
'AC_LTDL_PREOPEN' => 1,
|
||||||
|
'AC_DEFUN' => 1,
|
||||||
|
'AC_LIBTOOL_OBJDIR' => 1,
|
||||||
|
'AM_AUX_DIR_EXPAND' => 1,
|
||||||
|
'm4_pattern_allow' => 1,
|
||||||
|
'_LT_AC_SYS_LIBPATH_AIX' => 1,
|
||||||
|
'_AM_AUTOCONF_VERSION' => 1,
|
||||||
|
'_LT_AC_LANG_CXX' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_CC_C_O' => 1,
|
||||||
|
'AM_MAINTAINER_MODE' => 1,
|
||||||
|
'AM_SET_DEPDIR' => 1,
|
||||||
|
'_AM_SET_OPTION' => 1,
|
||||||
|
'AM_ENABLE_STATIC' => 1,
|
||||||
|
'AC_PROG_NM' => 1,
|
||||||
|
'_LT_AC_LANG_F77' => 1,
|
||||||
|
'_LT_PROG_CXX' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
|
||||||
'AC_LIBTOOL_FC' => 1,
|
'AC_LIBTOOL_FC' => 1,
|
||||||
|
'_LT_PROG_LTMAIN' => 1,
|
||||||
|
'LTOPTIONS_VERSION' => 1,
|
||||||
|
'_LT_PATH_TOOL_PREFIX' => 1,
|
||||||
|
'AM_SET_LEADING_DOT' => 1,
|
||||||
|
'_AM_CONFIG_MACRO_DIRS' => 1,
|
||||||
|
'AC_ENABLE_FAST_INSTALL' => 1,
|
||||||
|
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
|
||||||
|
'_AM_PROG_TAR' => 1,
|
||||||
|
'include' => 1,
|
||||||
|
'AC_PATH_MAGIC' => 1,
|
||||||
|
'_LT_PROG_FC' => 1,
|
||||||
|
'AM_PROG_INSTALL_STRIP' => 1,
|
||||||
|
'LT_FUNC_DLSYM_USCORE' => 1,
|
||||||
|
'LT_LIB_DLLOAD' => 1,
|
||||||
|
'AC_LTDL_OBJDIR' => 1,
|
||||||
|
'AM_AUTOMAKE_VERSION' => 1,
|
||||||
|
'LT_LANG' => 1,
|
||||||
|
'AC_LIB_LTDL' => 1,
|
||||||
|
'_AC_PROG_LIBTOOL' => 1,
|
||||||
|
'AM_MISSING_PROG' => 1,
|
||||||
|
'_AM_SUBST_NOTMAKE' => 1,
|
||||||
|
'AC_PROG_LIBTOOL' => 1,
|
||||||
'_m4_warn' => 1,
|
'_m4_warn' => 1,
|
||||||
'AC_PROG_LD' => 1,
|
'AC_PROG_LD' => 1,
|
||||||
'_AM_SET_OPTIONS' => 1,
|
'LT_PATH_NM' => 1,
|
||||||
'AC_LTDL_OBJDIR' => 1,
|
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
|
||||||
'AC_LIBTOOL_CONFIG' => 1,
|
'AC_LIBTOOL_CONFIG' => 1,
|
||||||
'LT_SYS_DLSEARCH_PATH' => 1,
|
'LT_SYS_DLSEARCH_PATH' => 1,
|
||||||
'AM_AUTOMAKE_VERSION' => 1,
|
'_LT_AC_LANG_F77_CONFIG' => 1,
|
||||||
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
|
'AM_DEP_TRACK' => 1,
|
||||||
'AM_MISSING_HAS_RUN' => 1,
|
'LTDL_INSTALLABLE' => 1,
|
||||||
|
'LT_SYS_MODULE_PATH' => 1,
|
||||||
|
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
|
||||||
|
'_AM_DEPENDENCIES' => 1,
|
||||||
|
'_LT_AC_LANG_CXX_CONFIG' => 1,
|
||||||
|
'AM_CONDITIONAL' => 1,
|
||||||
|
'_LT_AC_TAGCONFIG' => 1,
|
||||||
|
'LT_SYS_DLOPEN_DEPLIBS' => 1,
|
||||||
|
'LT_CONFIG_LTDL_DIR' => 1,
|
||||||
'AM_MAKE_INCLUDE' => 1,
|
'AM_MAKE_INCLUDE' => 1,
|
||||||
'AC_LIBTOOL_GCJ' => 1,
|
'LT_INIT' => 1,
|
||||||
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
|
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
|
||||||
'AC_LIBTOOL_DLOPEN_SELF' => 1,
|
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
|
||||||
'LTDL_CONVENIENCE' => 1,
|
'_LT_AC_LANG_GCJ' => 1,
|
||||||
'AM_DISABLE_STATIC' => 1,
|
'AM_MISSING_HAS_RUN' => 1,
|
||||||
|
'_LT_AC_FILE_LTDLL_C' => 1,
|
||||||
|
'LT_SYS_MODULE_EXT' => 1,
|
||||||
|
'AC_DISABLE_STATIC' => 1,
|
||||||
|
'_AM_IF_OPTION' => 1,
|
||||||
|
'AM_SANITY_CHECK' => 1,
|
||||||
|
'LT_SUPPORTED_TAG' => 1,
|
||||||
|
'AC_LIBTOOL_F77' => 1,
|
||||||
|
'_LT_AC_LANG_RC_CONFIG' => 1,
|
||||||
|
'AC_LIBTOOL_RC' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
|
||||||
|
'AC_ENABLE_STATIC' => 1,
|
||||||
|
'AC_LTDL_DLLIB' => 1,
|
||||||
'AC_LTDL_SYMBOL_USCORE' => 1,
|
'AC_LTDL_SYMBOL_USCORE' => 1,
|
||||||
'LT_AC_PROG_GCJ' => 1,
|
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
|
||||||
'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
|
'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
|
||||||
'_LT_AC_TRY_DLOPEN_SELF' => 1
|
'LTDL_CONVENIENCE' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
|
||||||
|
'AM_PROG_CC_C_O' => 1,
|
||||||
|
'_LT_COMPILER_BOILERPLATE' => 1
|
||||||
}
|
}
|
||||||
], 'Autom4te::Request' ),
|
], 'Autom4te::Request' ),
|
||||||
bless( [
|
bless( [
|
||||||
@ -263,186 +263,186 @@
|
|||||||
'configure.ac'
|
'configure.ac'
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
'AM_DEP_TRACK' => 1,
|
|
||||||
'_LT_AC_SYS_COMPILER' => 1,
|
|
||||||
'_LT_LINKER_OPTION' => 1,
|
|
||||||
'AC_LIBTOOL_DLOPEN' => 1,
|
|
||||||
'AC_DEPLIBS_CHECK_METHOD' => 1,
|
|
||||||
'AC_CONFIG_MACRO_DIR' => 1,
|
|
||||||
'AC_LIB_LTDL' => 1,
|
|
||||||
'AM_PROG_INSTALL_SH' => 1,
|
|
||||||
'_LTDL_SETUP' => 1,
|
|
||||||
'AM_PROG_LD' => 1,
|
|
||||||
'_AM_IF_OPTION' => 1,
|
|
||||||
'LT_PATH_LD' => 1,
|
|
||||||
'AC_LIBLTDL_CONVENIENCE' => 1,
|
|
||||||
'LT_SUPPORTED_TAG' => 1,
|
|
||||||
'AM_RUN_LOG' => 1,
|
|
||||||
'_AM_PROG_TAR' => 1,
|
|
||||||
'_AM_AUTOCONF_VERSION' => 1,
|
|
||||||
'AC_PROG_EGREP' => 1,
|
|
||||||
'_LT_AC_TAGVAR' => 1,
|
|
||||||
'AM_MAINTAINER_MODE' => 1,
|
|
||||||
'AM_PROG_LIBTOOL' => 1,
|
|
||||||
'_LT_AC_LOCK' => 1,
|
|
||||||
'_LT_AC_LANG_C_CONFIG' => 1,
|
|
||||||
'LT_AC_PROG_RC' => 1,
|
|
||||||
'AC_ENABLE_SHARED' => 1,
|
|
||||||
'LT_LIB_DLLOAD' => 1,
|
|
||||||
'AC_LIBTOOL_COMPILER_OPTION' => 1,
|
|
||||||
'_LT_AC_FILE_LTDLL_C' => 1,
|
|
||||||
'AC_PATH_TOOL_PREFIX' => 1,
|
|
||||||
'LT_WITH_LTDL' => 1,
|
|
||||||
'AC_DEFUN' => 1,
|
|
||||||
'AM_INIT_AUTOMAKE' => 1,
|
|
||||||
'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
|
|
||||||
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
|
|
||||||
'LT_PATH_NM' => 1,
|
|
||||||
'AC_DEFUN_ONCE' => 1,
|
|
||||||
'AU_DEFUN' => 1,
|
|
||||||
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
|
|
||||||
'AC_PROG_NM' => 1,
|
|
||||||
'AC_CHECK_LIBM' => 1,
|
|
||||||
'_LT_AC_LANG_CXX' => 1,
|
|
||||||
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
|
|
||||||
'AC_PATH_MAGIC' => 1,
|
|
||||||
'_LT_AC_SHELL_INIT' => 1,
|
|
||||||
'AM_ENABLE_SHARED' => 1,
|
|
||||||
'LT_OUTPUT' => 1,
|
|
||||||
'_AM_SET_OPTION' => 1,
|
|
||||||
'LT_LIB_M' => 1,
|
|
||||||
'_LT_LINKER_BOILERPLATE' => 1,
|
|
||||||
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
|
|
||||||
'AM_CONDITIONAL' => 1,
|
|
||||||
'AM_SILENT_RULES' => 1,
|
|
||||||
'AM_SANITY_CHECK' => 1,
|
|
||||||
'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
|
|
||||||
'AC_LTDL_ENABLE_INSTALL' => 1,
|
'AC_LTDL_ENABLE_INSTALL' => 1,
|
||||||
'_LT_COMPILER_BOILERPLATE' => 1,
|
'LT_WITH_LTDL' => 1,
|
||||||
'LT_SYS_SYMBOL_USCORE' => 1,
|
|
||||||
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
|
|
||||||
'AM_PROG_CC_C_O' => 1,
|
|
||||||
'AC_LTDL_PREOPEN' => 1,
|
|
||||||
'_LT_PROG_LTMAIN' => 1,
|
|
||||||
'AC_DISABLE_FAST_INSTALL' => 1,
|
|
||||||
'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
|
|
||||||
'AC_WITH_LTDL' => 1,
|
|
||||||
'_LT_CC_BASENAME' => 1,
|
|
||||||
'AC_PROG_LD_RELOAD_FLAG' => 1,
|
|
||||||
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
|
|
||||||
'_LT_AC_CHECK_DLFCN' => 1,
|
|
||||||
'LT_SYS_MODULE_PATH' => 1,
|
|
||||||
'AC_LIBTOOL_CXX' => 1,
|
|
||||||
'LT_PROG_GCJ' => 1,
|
|
||||||
'_AM_PROG_CC_C_O' => 1,
|
|
||||||
'AC_LIBTOOL_SETUP' => 1,
|
|
||||||
'_LT_PROG_FC' => 1,
|
|
||||||
'LT_CONFIG_LTDL_DIR' => 1,
|
|
||||||
'AC_LIBTOOL_OBJDIR' => 1,
|
|
||||||
'AC_LTDL_SHLIBEXT' => 1,
|
|
||||||
'AC_ENABLE_STATIC' => 1,
|
|
||||||
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
|
|
||||||
'AC_DISABLE_STATIC' => 1,
|
|
||||||
'_AM_DEPENDENCIES' => 1,
|
|
||||||
'AC_LIBTOOL_RC' => 1,
|
|
||||||
'AC_LIBTOOL_F77' => 1,
|
|
||||||
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
|
|
||||||
'_LT_AC_LANG_GCJ' => 1,
|
|
||||||
'LT_LANG' => 1,
|
|
||||||
'AC_PROG_LIBTOOL' => 1,
|
|
||||||
'LT_AC_PROG_EGREP' => 1,
|
|
||||||
'AC_PROG_LD_GNU' => 1,
|
|
||||||
'AM_PROG_INSTALL_STRIP' => 1,
|
|
||||||
'AC_LIBTOOL_PROG_CC_C_O' => 1,
|
|
||||||
'LT_INIT' => 1,
|
|
||||||
'_LT_AC_TAGCONFIG' => 1,
|
|
||||||
'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
|
|
||||||
'_AM_CONFIG_MACRO_DIRS' => 1,
|
|
||||||
'AM_SET_LEADING_DOT' => 1,
|
|
||||||
'm4_pattern_forbid' => 1,
|
|
||||||
'_LT_PROG_ECHO_BACKSLASH' => 1,
|
|
||||||
'AM_ENABLE_STATIC' => 1,
|
|
||||||
'LTOPTIONS_VERSION' => 1,
|
|
||||||
'LT_SYS_MODULE_EXT' => 1,
|
|
||||||
'AM_MISSING_PROG' => 1,
|
|
||||||
'_LT_COMPILER_OPTION' => 1,
|
|
||||||
'AM_SET_DEPDIR' => 1,
|
|
||||||
'LT_FUNC_ARGZ' => 1,
|
|
||||||
'm4_include' => 1,
|
|
||||||
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
|
|
||||||
'_LT_PROG_CXX' => 1,
|
|
||||||
'LTVERSION_VERSION' => 1,
|
|
||||||
'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
|
|
||||||
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
|
|
||||||
'AM_PROG_NM' => 1,
|
|
||||||
'_LT_PATH_TOOL_PREFIX' => 1,
|
|
||||||
'_LT_AC_PROG_CXXCPP' => 1,
|
|
||||||
'LT_FUNC_DLSYM_USCORE' => 1,
|
|
||||||
'_LT_AC_LANG_F77' => 1,
|
|
||||||
'AM_AUX_DIR_EXPAND' => 1,
|
|
||||||
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
|
|
||||||
'_LT_PROG_F77' => 1,
|
|
||||||
'AC_LTDL_DLSYM_USCORE' => 1,
|
'AC_LTDL_DLSYM_USCORE' => 1,
|
||||||
'_LT_AC_LANG_F77_CONFIG' => 1,
|
'_LT_COMPILER_OPTION' => 1,
|
||||||
'_LT_AC_LANG_CXX_CONFIG' => 1,
|
|
||||||
'LTSUGAR_VERSION' => 1,
|
'LTSUGAR_VERSION' => 1,
|
||||||
'AM_SUBST_NOTMAKE' => 1,
|
'AC_LIBTOOL_COMPILER_OPTION' => 1,
|
||||||
'include' => 1,
|
'LT_PATH_LD' => 1,
|
||||||
'AC_LIBTOOL_WIN32_DLL' => 1,
|
|
||||||
'LT_PROG_RC' => 1,
|
|
||||||
'_LT_WITH_SYSROOT' => 1,
|
|
||||||
'LTDL_INIT' => 1,
|
|
||||||
'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
|
|
||||||
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
|
|
||||||
'AC_LIBTOOL_LINKER_OPTION' => 1,
|
|
||||||
'_LT_AC_LANG_RC_CONFIG' => 1,
|
|
||||||
'AC_DISABLE_SHARED' => 1,
|
|
||||||
'_LT_REQUIRED_DARWIN_CHECKS' => 1,
|
|
||||||
'LT_PROG_GO' => 1,
|
|
||||||
'AC_LTDL_SHLIBPATH' => 1,
|
|
||||||
'LT_AC_PROG_SED' => 1,
|
|
||||||
'LT_SYS_DLOPEN_DEPLIBS' => 1,
|
|
||||||
'_LT_LIBOBJ' => 1,
|
|
||||||
'LTOBSOLETE_VERSION' => 1,
|
|
||||||
'_LT_PREPARE_SED_QUOTE_VARS' => 1,
|
|
||||||
'_LT_AC_SYS_LIBPATH_AIX' => 1,
|
|
||||||
'AC_ENABLE_FAST_INSTALL' => 1,
|
|
||||||
'AC_LIBTOOL_PICMODE' => 1,
|
|
||||||
'AM_DISABLE_SHARED' => 1,
|
|
||||||
'LT_SYS_DLOPEN_SELF' => 1,
|
|
||||||
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
|
|
||||||
'_AC_PROG_LIBTOOL' => 1,
|
|
||||||
'AC_LTDL_DLLIB' => 1,
|
|
||||||
'_LT_DLL_DEF_P' => 1,
|
|
||||||
'm4_pattern_allow' => 1,
|
|
||||||
'_AM_MANGLE_OPTION' => 1,
|
|
||||||
'AC_LIBLTDL_INSTALLABLE' => 1,
|
|
||||||
'AC_LTDL_SYSSEARCHPATH' => 1,
|
|
||||||
'_LT_AC_LANG_GCJ_CONFIG' => 1,
|
|
||||||
'AC_LIBTOOL_CONFIG' => 1,
|
|
||||||
'_AM_SET_OPTIONS' => 1,
|
|
||||||
'AC_LTDL_OBJDIR' => 1,
|
|
||||||
'AC_PROG_LD' => 1,
|
|
||||||
'_AM_SUBST_NOTMAKE' => 1,
|
|
||||||
'AC_LIBTOOL_FC' => 1,
|
|
||||||
'_m4_warn' => 1,
|
|
||||||
'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
|
|
||||||
'LT_CMD_MAX_LEN' => 1,
|
|
||||||
'LTDL_INSTALLABLE' => 1,
|
|
||||||
'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
|
|
||||||
'_LT_AC_TRY_DLOPEN_SELF' => 1,
|
|
||||||
'AC_LTDL_SYMBOL_USCORE' => 1,
|
|
||||||
'LT_AC_PROG_GCJ' => 1,
|
|
||||||
'AM_DISABLE_STATIC' => 1,
|
|
||||||
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
|
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
|
||||||
'AC_LIBTOOL_DLOPEN_SELF' => 1,
|
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
|
||||||
'LTDL_CONVENIENCE' => 1,
|
'_LT_AC_TAGVAR' => 1,
|
||||||
'AM_MISSING_HAS_RUN' => 1,
|
'LT_OUTPUT' => 1,
|
||||||
'AC_LIBTOOL_GCJ' => 1,
|
'_AM_MANGLE_OPTION' => 1,
|
||||||
'AM_MAKE_INCLUDE' => 1,
|
'LTVERSION_VERSION' => 1,
|
||||||
|
'_AM_PROG_CC_C_O' => 1,
|
||||||
|
'LTOBSOLETE_VERSION' => 1,
|
||||||
|
'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
|
||||||
|
'AM_RUN_LOG' => 1,
|
||||||
|
'AC_LIBTOOL_WIN32_DLL' => 1,
|
||||||
|
'AC_PROG_LD_RELOAD_FLAG' => 1,
|
||||||
|
'_LT_DLL_DEF_P' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
|
||||||
|
'LT_AC_PROG_EGREP' => 1,
|
||||||
|
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
|
||||||
|
'_LT_PROG_ECHO_BACKSLASH' => 1,
|
||||||
|
'AM_SUBST_NOTMAKE' => 1,
|
||||||
|
'_LT_REQUIRED_DARWIN_CHECKS' => 1,
|
||||||
|
'_LTDL_SETUP' => 1,
|
||||||
|
'AC_LIBTOOL_LINKER_OPTION' => 1,
|
||||||
|
'AM_DISABLE_STATIC' => 1,
|
||||||
|
'LT_PROG_GO' => 1,
|
||||||
|
'_LT_LINKER_BOILERPLATE' => 1,
|
||||||
|
'AM_PROG_LIBTOOL' => 1,
|
||||||
|
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
|
||||||
|
'AC_LTDL_SHLIBEXT' => 1,
|
||||||
|
'_LT_AC_SHELL_INIT' => 1,
|
||||||
|
'AM_PROG_LD' => 1,
|
||||||
|
'AM_SILENT_RULES' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
|
||||||
|
'AC_DISABLE_FAST_INSTALL' => 1,
|
||||||
|
'_LT_WITH_SYSROOT' => 1,
|
||||||
|
'AC_PROG_EGREP' => 1,
|
||||||
|
'_LT_AC_SYS_COMPILER' => 1,
|
||||||
|
'LT_CMD_MAX_LEN' => 1,
|
||||||
|
'AC_LIBLTDL_INSTALLABLE' => 1,
|
||||||
|
'LTDL_INIT' => 1,
|
||||||
|
'AC_ENABLE_SHARED' => 1,
|
||||||
|
'AM_INIT_AUTOMAKE' => 1,
|
||||||
|
'_LT_AC_LANG_GCJ_CONFIG' => 1,
|
||||||
|
'AC_CONFIG_MACRO_DIR' => 1,
|
||||||
|
'_LT_LINKER_OPTION' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
|
||||||
|
'AC_DISABLE_SHARED' => 1,
|
||||||
|
'AM_ENABLE_SHARED' => 1,
|
||||||
|
'LT_PROG_GCJ' => 1,
|
||||||
|
'AC_LIBTOOL_DLOPEN' => 1,
|
||||||
|
'_LT_AC_LOCK' => 1,
|
||||||
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
|
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
|
||||||
|
'AC_PATH_TOOL_PREFIX' => 1,
|
||||||
|
'AC_CHECK_LIBM' => 1,
|
||||||
|
'AC_LTDL_SHLIBPATH' => 1,
|
||||||
|
'LT_LIB_M' => 1,
|
||||||
|
'AC_LIBLTDL_CONVENIENCE' => 1,
|
||||||
|
'LT_SYS_SYMBOL_USCORE' => 1,
|
||||||
|
'LT_FUNC_ARGZ' => 1,
|
||||||
|
'_LT_LIBOBJ' => 1,
|
||||||
|
'm4_pattern_forbid' => 1,
|
||||||
|
'_LT_AC_LANG_C_CONFIG' => 1,
|
||||||
|
'AM_DISABLE_SHARED' => 1,
|
||||||
|
'_LT_PROG_F77' => 1,
|
||||||
|
'AM_PROG_NM' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
|
||||||
|
'AC_LIBTOOL_SETUP' => 1,
|
||||||
|
'_LT_CC_BASENAME' => 1,
|
||||||
|
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
|
||||||
|
'_LT_AC_CHECK_DLFCN' => 1,
|
||||||
|
'_LT_PREPARE_SED_QUOTE_VARS' => 1,
|
||||||
|
'AC_LIBTOOL_CXX' => 1,
|
||||||
|
'AC_LIBTOOL_GCJ' => 1,
|
||||||
|
'LT_SYS_DLOPEN_SELF' => 1,
|
||||||
|
'LT_PROG_RC' => 1,
|
||||||
|
'AC_DEPLIBS_CHECK_METHOD' => 1,
|
||||||
|
'AU_DEFUN' => 1,
|
||||||
|
'AC_LIBTOOL_PICMODE' => 1,
|
||||||
|
'_AM_SET_OPTIONS' => 1,
|
||||||
|
'LT_AC_PROG_SED' => 1,
|
||||||
|
'_LT_AC_TRY_DLOPEN_SELF' => 1,
|
||||||
|
'AC_DEFUN_ONCE' => 1,
|
||||||
|
'AC_WITH_LTDL' => 1,
|
||||||
|
'AC_LIBTOOL_DLOPEN_SELF' => 1,
|
||||||
|
'_AM_AUTOCONF_VERSION' => 1,
|
||||||
|
'_LT_AC_SYS_LIBPATH_AIX' => 1,
|
||||||
|
'AM_SET_DEPDIR' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_CC_C_O' => 1,
|
||||||
|
'AM_MAINTAINER_MODE' => 1,
|
||||||
|
'_LT_AC_LANG_CXX' => 1,
|
||||||
|
'_AM_SET_OPTION' => 1,
|
||||||
|
'AM_ENABLE_STATIC' => 1,
|
||||||
|
'AC_PROG_NM' => 1,
|
||||||
|
'_LT_PROG_CXX' => 1,
|
||||||
|
'_LT_AC_LANG_F77' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
|
||||||
|
'AC_LIBTOOL_FC' => 1,
|
||||||
|
'_LT_PROG_LTMAIN' => 1,
|
||||||
|
'LT_AC_PROG_RC' => 1,
|
||||||
|
'AC_PROG_LD_GNU' => 1,
|
||||||
|
'LT_AC_PROG_GCJ' => 1,
|
||||||
|
'm4_include' => 1,
|
||||||
|
'AC_LTDL_SYSSEARCHPATH' => 1,
|
||||||
|
'AM_PROG_INSTALL_SH' => 1,
|
||||||
|
'AC_LTDL_PREOPEN' => 1,
|
||||||
|
'AC_DEFUN' => 1,
|
||||||
|
'_LT_AC_PROG_CXXCPP' => 1,
|
||||||
|
'AM_AUX_DIR_EXPAND' => 1,
|
||||||
|
'AC_LIBTOOL_OBJDIR' => 1,
|
||||||
|
'm4_pattern_allow' => 1,
|
||||||
|
'_AM_PROG_TAR' => 1,
|
||||||
|
'include' => 1,
|
||||||
|
'AC_PATH_MAGIC' => 1,
|
||||||
|
'_LT_PROG_FC' => 1,
|
||||||
|
'LT_FUNC_DLSYM_USCORE' => 1,
|
||||||
|
'AM_PROG_INSTALL_STRIP' => 1,
|
||||||
|
'LT_LIB_DLLOAD' => 1,
|
||||||
|
'AC_LTDL_OBJDIR' => 1,
|
||||||
|
'AM_AUTOMAKE_VERSION' => 1,
|
||||||
|
'LT_LANG' => 1,
|
||||||
|
'_AC_PROG_LIBTOOL' => 1,
|
||||||
|
'AC_LIB_LTDL' => 1,
|
||||||
|
'AM_MISSING_PROG' => 1,
|
||||||
|
'_AM_SUBST_NOTMAKE' => 1,
|
||||||
|
'_m4_warn' => 1,
|
||||||
|
'AC_PROG_LIBTOOL' => 1,
|
||||||
|
'AC_PROG_LD' => 1,
|
||||||
|
'LT_PATH_NM' => 1,
|
||||||
|
'LTOPTIONS_VERSION' => 1,
|
||||||
|
'_LT_PATH_TOOL_PREFIX' => 1,
|
||||||
|
'AM_SET_LEADING_DOT' => 1,
|
||||||
|
'AC_ENABLE_FAST_INSTALL' => 1,
|
||||||
|
'_AM_CONFIG_MACRO_DIRS' => 1,
|
||||||
|
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
|
||||||
|
'_LT_AC_LANG_CXX_CONFIG' => 1,
|
||||||
|
'LT_SYS_DLOPEN_DEPLIBS' => 1,
|
||||||
|
'_LT_AC_TAGCONFIG' => 1,
|
||||||
|
'AM_CONDITIONAL' => 1,
|
||||||
|
'LT_CONFIG_LTDL_DIR' => 1,
|
||||||
|
'AM_MAKE_INCLUDE' => 1,
|
||||||
|
'LT_INIT' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
|
||||||
|
'AC_LIBTOOL_CONFIG' => 1,
|
||||||
'LT_SYS_DLSEARCH_PATH' => 1,
|
'LT_SYS_DLSEARCH_PATH' => 1,
|
||||||
'AM_AUTOMAKE_VERSION' => 1
|
'_LT_AC_LANG_F77_CONFIG' => 1,
|
||||||
|
'AM_DEP_TRACK' => 1,
|
||||||
|
'LTDL_INSTALLABLE' => 1,
|
||||||
|
'LT_SYS_MODULE_PATH' => 1,
|
||||||
|
'_AM_DEPENDENCIES' => 1,
|
||||||
|
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
|
||||||
|
'LT_SUPPORTED_TAG' => 1,
|
||||||
|
'AC_LIBTOOL_F77' => 1,
|
||||||
|
'AC_LIBTOOL_RC' => 1,
|
||||||
|
'_LT_AC_LANG_RC_CONFIG' => 1,
|
||||||
|
'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
|
||||||
|
'AC_ENABLE_STATIC' => 1,
|
||||||
|
'AC_LTDL_SYMBOL_USCORE' => 1,
|
||||||
|
'AC_LTDL_DLLIB' => 1,
|
||||||
|
'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
|
||||||
|
'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
|
||||||
|
'LTDL_CONVENIENCE' => 1,
|
||||||
|
'AM_PROG_CC_C_O' => 1,
|
||||||
|
'_LT_COMPILER_BOILERPLATE' => 1,
|
||||||
|
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
|
||||||
|
'_LT_AC_LANG_GCJ' => 1,
|
||||||
|
'AM_MISSING_HAS_RUN' => 1,
|
||||||
|
'_LT_AC_FILE_LTDLL_C' => 1,
|
||||||
|
'LT_SYS_MODULE_EXT' => 1,
|
||||||
|
'AC_DISABLE_STATIC' => 1,
|
||||||
|
'AM_SANITY_CHECK' => 1,
|
||||||
|
'_AM_IF_OPTION' => 1
|
||||||
}
|
}
|
||||||
], 'Autom4te::Request' ),
|
], 'Autom4te::Request' ),
|
||||||
bless( [
|
bless( [
|
||||||
@ -457,65 +457,65 @@
|
|||||||
'configure.ac'
|
'configure.ac'
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
'_AM_COND_ENDIF' => 1,
|
|
||||||
'_AM_MAKEFILE_INCLUDE' => 1,
|
|
||||||
'include' => 1,
|
|
||||||
'AC_CONFIG_LIBOBJ_DIR' => 1,
|
'AC_CONFIG_LIBOBJ_DIR' => 1,
|
||||||
'AM_XGETTEXT_OPTION' => 1,
|
|
||||||
'LT_CONFIG_LTDL_DIR' => 1,
|
|
||||||
'AC_FC_PP_SRCEXT' => 1,
|
|
||||||
'AC_FC_FREEFORM' => 1,
|
'AC_FC_FREEFORM' => 1,
|
||||||
|
'AC_REQUIRE_AUX_FILE' => 1,
|
||||||
|
'AC_CANONICAL_TARGET' => 1,
|
||||||
|
'AC_SUBST' => 1,
|
||||||
|
'm4_include' => 1,
|
||||||
|
'AC_CONFIG_AUX_DIR' => 1,
|
||||||
|
'AC_FC_PP_SRCEXT' => 1,
|
||||||
|
'AM_PROG_CXX_C_O' => 1,
|
||||||
'AC_CONFIG_FILES' => 1,
|
'AC_CONFIG_FILES' => 1,
|
||||||
'_AM_SUBST_NOTMAKE' => 1,
|
'm4_pattern_forbid' => 1,
|
||||||
'_m4_warn' => 1,
|
'AC_CONFIG_LINKS' => 1,
|
||||||
|
'AC_DEFINE_TRACE_LITERAL' => 1,
|
||||||
|
'm4_pattern_allow' => 1,
|
||||||
|
'_AM_COND_ENDIF' => 1,
|
||||||
|
'AM_ENABLE_MULTILIB' => 1,
|
||||||
|
'AM_MAINTAINER_MODE' => 1,
|
||||||
|
'sinclude' => 1,
|
||||||
|
'AC_CANONICAL_BUILD' => 1,
|
||||||
'AM_PROG_AR' => 1,
|
'AM_PROG_AR' => 1,
|
||||||
|
'AC_FC_PP_DEFINE' => 1,
|
||||||
|
'AC_CONFIG_HEADERS' => 1,
|
||||||
|
'_LT_AC_TAGCONFIG' => 1,
|
||||||
|
'AM_POT_TOOLS' => 1,
|
||||||
|
'AM_CONDITIONAL' => 1,
|
||||||
|
'LT_CONFIG_LTDL_DIR' => 1,
|
||||||
|
'AM_XGETTEXT_OPTION' => 1,
|
||||||
|
'_AM_MAKEFILE_INCLUDE' => 1,
|
||||||
|
'_AM_COND_IF' => 1,
|
||||||
|
'LT_INIT' => 1,
|
||||||
|
'AM_PROG_F77_C_O' => 1,
|
||||||
|
'AM_MAKEFILE_INCLUDE' => 1,
|
||||||
|
'AC_CONFIG_SUBDIRS' => 1,
|
||||||
|
'AC_SUBST_TRACE' => 1,
|
||||||
|
'AM_PROG_MKDIR_P' => 1,
|
||||||
'AM_NLS' => 1,
|
'AM_NLS' => 1,
|
||||||
'AM_PROG_MOC' => 1,
|
'AM_SILENT_RULES' => 1,
|
||||||
|
'AM_EXTRA_RECURSIVE_TARGETS' => 1,
|
||||||
|
'_AM_COND_ELSE' => 1,
|
||||||
|
'AC_INIT' => 1,
|
||||||
|
'AC_FC_SRCEXT' => 1,
|
||||||
|
'AM_PATH_GUILE' => 1,
|
||||||
|
'AC_CANONICAL_HOST' => 1,
|
||||||
|
'm4_sinclude' => 1,
|
||||||
|
'AC_CANONICAL_SYSTEM' => 1,
|
||||||
|
'AM_GNU_GETTEXT' => 1,
|
||||||
|
'AM_INIT_AUTOMAKE' => 1,
|
||||||
|
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
|
||||||
'AH_OUTPUT' => 1,
|
'AH_OUTPUT' => 1,
|
||||||
|
'AM_PROG_MOC' => 1,
|
||||||
|
'LT_SUPPORTED_TAG' => 1,
|
||||||
|
'include' => 1,
|
||||||
'AC_LIBSOURCE' => 1,
|
'AC_LIBSOURCE' => 1,
|
||||||
'AM_AUTOMAKE_VERSION' => 1,
|
'AM_AUTOMAKE_VERSION' => 1,
|
||||||
'm4_pattern_forbid' => 1,
|
|
||||||
'AC_CONFIG_AUX_DIR' => 1,
|
|
||||||
'AM_MAKEFILE_INCLUDE' => 1,
|
|
||||||
'AM_CONDITIONAL' => 1,
|
|
||||||
'AM_SILENT_RULES' => 1,
|
|
||||||
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
|
|
||||||
'LT_INIT' => 1,
|
|
||||||
'AC_SUBST' => 1,
|
|
||||||
'AM_POT_TOOLS' => 1,
|
|
||||||
'_LT_AC_TAGCONFIG' => 1,
|
|
||||||
'AC_FC_SRCEXT' => 1,
|
|
||||||
'AC_PROG_LIBTOOL' => 1,
|
|
||||||
'AC_CONFIG_SUBDIRS' => 1,
|
|
||||||
'AC_CONFIG_HEADERS' => 1,
|
|
||||||
'm4_include' => 1,
|
|
||||||
'AC_CANONICAL_BUILD' => 1,
|
|
||||||
'_AM_COND_IF' => 1,
|
|
||||||
'AC_INIT' => 1,
|
|
||||||
'AM_PROG_CXX_C_O' => 1,
|
|
||||||
'AM_MAINTAINER_MODE' => 1,
|
|
||||||
'AC_CONFIG_LINKS' => 1,
|
|
||||||
'AC_REQUIRE_AUX_FILE' => 1,
|
|
||||||
'AC_DEFINE_TRACE_LITERAL' => 1,
|
|
||||||
'LT_SUPPORTED_TAG' => 1,
|
|
||||||
'AM_PROG_MKDIR_P' => 1,
|
|
||||||
'AM_PATH_GUILE' => 1,
|
|
||||||
'AC_CANONICAL_SYSTEM' => 1,
|
|
||||||
'AM_PROG_CC_C_O' => 1,
|
|
||||||
'AM_EXTRA_RECURSIVE_TARGETS' => 1,
|
|
||||||
'AM_PROG_FC_C_O' => 1,
|
'AM_PROG_FC_C_O' => 1,
|
||||||
'AM_PROG_F77_C_O' => 1,
|
'_AM_SUBST_NOTMAKE' => 1,
|
||||||
'm4_sinclude' => 1,
|
'_m4_warn' => 1,
|
||||||
'AC_CANONICAL_HOST' => 1,
|
'AC_PROG_LIBTOOL' => 1,
|
||||||
'_AM_COND_ELSE' => 1,
|
'AM_PROG_CC_C_O' => 1
|
||||||
'sinclude' => 1,
|
|
||||||
'AM_INIT_AUTOMAKE' => 1,
|
|
||||||
'AC_FC_PP_DEFINE' => 1,
|
|
||||||
'AM_GNU_GETTEXT' => 1,
|
|
||||||
'm4_pattern_allow' => 1,
|
|
||||||
'AC_SUBST_TRACE' => 1,
|
|
||||||
'AM_ENABLE_MULTILIB' => 1,
|
|
||||||
'AC_CANONICAL_TARGET' => 1
|
|
||||||
}
|
}
|
||||||
], 'Autom4te::Request' )
|
], 'Autom4te::Request' )
|
||||||
);
|
);
|
||||||
|
|||||||
@ -3,7 +3,7 @@ m4trace:aclocal.m4:1190: -1- m4_include([config/m4/ltoptions.m4])
|
|||||||
m4trace:aclocal.m4:1191: -1- m4_include([config/m4/ltsugar.m4])
|
m4trace:aclocal.m4:1191: -1- m4_include([config/m4/ltsugar.m4])
|
||||||
m4trace:aclocal.m4:1192: -1- m4_include([config/m4/ltversion.m4])
|
m4trace:aclocal.m4:1192: -1- m4_include([config/m4/ltversion.m4])
|
||||||
m4trace:aclocal.m4:1193: -1- m4_include([config/m4/lt~obsolete.m4])
|
m4trace:aclocal.m4:1193: -1- m4_include([config/m4/lt~obsolete.m4])
|
||||||
m4trace:configure.ac:27: -1- AC_INIT([mtrace], [0.3], [stefani@seibold.net])
|
m4trace:configure.ac:27: -1- AC_INIT([mtrace-ng], [0.4], [stefani@seibold.net])
|
||||||
m4trace:configure.ac:27: -1- m4_pattern_forbid([^_?A[CHUM]_])
|
m4trace:configure.ac:27: -1- m4_pattern_forbid([^_?A[CHUM]_])
|
||||||
m4trace:configure.ac:27: -1- m4_pattern_forbid([_AC_])
|
m4trace:configure.ac:27: -1- m4_pattern_forbid([_AC_])
|
||||||
m4trace:configure.ac:27: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
|
m4trace:configure.ac:27: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
@ -59,7 +59,7 @@ void trace_me(void);
|
|||||||
/* stop tracing a task. */
|
/* stop tracing a task. */
|
||||||
int untrace_task(struct task *task, int signum);
|
int untrace_task(struct task *task, int signum);
|
||||||
|
|
||||||
/* Called when mtrace needs to attach to task */
|
/* Called when mtrace-ng needs to attach to task */
|
||||||
int trace_attach(struct task *task);
|
int trace_attach(struct task *task);
|
||||||
|
|
||||||
/* wait for a task ready for tracing */
|
/* wait for a task ready for tracing */
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# This file is part of mtrace.
|
# This file is part of mtrace-ng.
|
||||||
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
# This file is part of mtrace.
|
# This file is part of mtrace-ng.
|
||||||
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
@ -101,13 +101,14 @@ static void find_address_in_section(bfd *abfd, asection *section, void *data __a
|
|||||||
psi->found = bfd_find_nearest_line(abfd, section, psi->syms, psi->pc - vma, &psi->filename, &psi->functionname, &psi->line);
|
psi->found = bfd_find_nearest_line(abfd, section, psi->syms, psi->pc - vma, &psi->filename, &psi->functionname, &psi->line);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct rb_sym *bin_file_lookup(struct bin_file *binfile, bfd_vma addr, unsigned long off, const char *filename)
|
struct rb_sym *bin_file_lookup(struct bin_file *binfile, bfd_vma addr, unsigned long off)
|
||||||
{
|
{
|
||||||
struct sym_info si = { 0 };
|
struct sym_info si = { 0 };
|
||||||
char *sym_buf = NULL;
|
char *sym_buf = NULL;
|
||||||
struct rb_root *root = &binfile->sym_table;
|
struct rb_root *root = &binfile->sym_table;
|
||||||
struct rb_node **new = &(root->rb_node), *parent = NULL;
|
struct rb_node **new = &(root->rb_node), *parent = NULL;
|
||||||
struct rb_sym *this;
|
struct rb_sym *this;
|
||||||
|
unsigned int si_info = 0;
|
||||||
|
|
||||||
if (!binfile)
|
if (!binfile)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -137,45 +138,42 @@ struct rb_sym *bin_file_lookup(struct bin_file *binfile, bfd_vma addr, unsigned
|
|||||||
|
|
||||||
bfd_map_over_sections(binfile->abfd, find_address_in_section, &si);
|
bfd_map_over_sections(binfile->abfd, find_address_in_section, &si);
|
||||||
|
|
||||||
if (!si.found) {
|
if (si.found) {
|
||||||
if (asprintf(&sym_buf, "%s", filename) == -1)
|
|
||||||
sym_buf = NULL;
|
|
||||||
} else {
|
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
do {
|
|
||||||
char *alloc = NULL;
|
char *alloc = NULL;
|
||||||
|
|
||||||
name = si.functionname;
|
|
||||||
if (name == NULL || *name == '\0') {
|
|
||||||
if (asprintf(&alloc, "[0x%lx]", (unsigned long)addr) == -1)
|
|
||||||
name = "?";
|
|
||||||
else
|
|
||||||
name = alloc;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
alloc = bfd_demangle(binfile->abfd, name, 27);
|
|
||||||
if (alloc != NULL)
|
|
||||||
name = alloc;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sym_buf)
|
if (sym_buf)
|
||||||
free(sym_buf);
|
free(sym_buf);
|
||||||
|
|
||||||
|
name = si.functionname;
|
||||||
|
|
||||||
|
if (!name || !*name)
|
||||||
|
name = "?";
|
||||||
|
else {
|
||||||
|
alloc = bfd_demangle(binfile->abfd, name, 27);
|
||||||
|
if (alloc)
|
||||||
|
name = alloc;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (si.filename) {
|
||||||
if (si.line) {
|
if (si.line) {
|
||||||
if (asprintf(&sym_buf, "%s:%u %s", si.filename ? si.filename : filename, si.line, name) == -1)
|
if (asprintf(&sym_buf, "%s:%u %s", si.filename, si.line, name) == -1)
|
||||||
sym_buf = NULL;
|
sym_buf = NULL;
|
||||||
|
else
|
||||||
|
si_info = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (asprintf(&sym_buf, "%s %s", si.filename ? si.filename : filename, name) == -1)
|
if (asprintf(&sym_buf, "%s %s", si.filename, name) == -1)
|
||||||
sym_buf = NULL;
|
sym_buf = NULL;
|
||||||
|
else
|
||||||
|
si_info = 1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sym_buf = strdup(name);
|
||||||
|
|
||||||
if (alloc)
|
if (alloc)
|
||||||
free(alloc);
|
free(alloc);
|
||||||
|
|
||||||
si.found = bfd_find_inliner_info(binfile->abfd, &si.filename, &si.functionname, &si.line);
|
|
||||||
} while (si.found);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this = malloc(sizeof(*this));
|
this = malloc(sizeof(*this));
|
||||||
@ -186,6 +184,7 @@ struct rb_sym *bin_file_lookup(struct bin_file *binfile, bfd_vma addr, unsigned
|
|||||||
this->sym = sym_buf;
|
this->sym = sym_buf;
|
||||||
this->refcnt = 1;
|
this->refcnt = 1;
|
||||||
this->binfile = binfile;
|
this->binfile = binfile;
|
||||||
|
this->si_info = si_info;
|
||||||
|
|
||||||
++binfile->refcnt;
|
++binfile->refcnt;
|
||||||
|
|
||||||
@ -196,7 +195,7 @@ struct rb_sym *bin_file_lookup(struct bin_file *binfile, bfd_vma addr, unsigned
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct bin_file *bin_file_open(const char *filename)
|
struct bin_file *bin_file_open(const char *filename, const char *mapname)
|
||||||
{
|
{
|
||||||
char **matching;
|
char **matching;
|
||||||
struct bin_file *binfile;
|
struct bin_file *binfile;
|
||||||
@ -219,6 +218,7 @@ struct bin_file *bin_file_open(const char *filename)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
binfile->filename = strdup(filename);
|
binfile->filename = strdup(filename);
|
||||||
|
binfile->mapname = strdup(mapname);
|
||||||
binfile->refcnt = 1;
|
binfile->refcnt = 1;
|
||||||
binfile->sym_table = RB_ROOT;
|
binfile->sym_table = RB_ROOT;
|
||||||
binfile->abfd = bfd_openr(binfile->filename, NULL);
|
binfile->abfd = bfd_openr(binfile->filename, NULL);
|
||||||
@ -242,6 +242,7 @@ error:
|
|||||||
if (binfile->abfd)
|
if (binfile->abfd)
|
||||||
bfd_close(binfile->abfd);
|
bfd_close(binfile->abfd);
|
||||||
free(binfile->filename);
|
free(binfile->filename);
|
||||||
|
free(binfile->mapname);
|
||||||
free(binfile);
|
free(binfile);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -267,6 +268,7 @@ void bin_file_put(struct bin_file *binfile)
|
|||||||
bfd_close(binfile->abfd);
|
bfd_close(binfile->abfd);
|
||||||
|
|
||||||
free(binfile->filename);
|
free(binfile->filename);
|
||||||
|
free(binfile->mapname);
|
||||||
free(binfile);
|
free(binfile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
@ -33,6 +33,7 @@ struct rb_sym {
|
|||||||
char *sym;
|
char *sym;
|
||||||
struct bin_file *binfile;
|
struct bin_file *binfile;
|
||||||
unsigned long refcnt;
|
unsigned long refcnt;
|
||||||
|
unsigned int si_info;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct bin_file {
|
struct bin_file {
|
||||||
@ -42,12 +43,13 @@ struct bin_file {
|
|||||||
struct rb_root sym_table;
|
struct rb_root sym_table;
|
||||||
unsigned long refcnt;
|
unsigned long refcnt;
|
||||||
char *filename;
|
char *filename;
|
||||||
|
char *mapname;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct bin_file *bin_file_open(const char *filename);
|
struct bin_file *bin_file_open(const char *filename, const char *mapname);
|
||||||
void bin_file_put(struct bin_file *binfile);
|
void bin_file_put(struct bin_file *binfile);
|
||||||
void bin_file_get(struct bin_file *binfile);
|
void bin_file_get(struct bin_file *binfile);
|
||||||
struct rb_sym *bin_file_lookup(struct bin_file *binfile, bfd_vma addr, unsigned long off, const char *filename);
|
struct rb_sym *bin_file_lookup(struct bin_file *binfile, bfd_vma addr, unsigned long off);
|
||||||
void bin_file_sym_get(struct rb_sym *sym);
|
void bin_file_sym_get(struct rb_sym *sym);
|
||||||
void bin_file_sym_put(struct rb_sym *sym);
|
void bin_file_sym_put(struct rb_sym *sym);
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
@ -44,11 +44,11 @@ void leaks_scan(struct process *process, int mode)
|
|||||||
client_wait_op(MT_SCAN);
|
client_wait_op(MT_SCAN);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dump_stacks(struct process *process, void (*dump)(struct process *process, const char *outfile), const char *outfile)
|
void dump_stacks(struct process *process, void (*dump)(struct process *process, const char *outfile, int lflag), const char *outfile, int lflag)
|
||||||
{
|
{
|
||||||
if (!process->n_allocations)
|
if (!process->n_allocations)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
dump(process, outfile);
|
dump(process, outfile, lflag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
@ -26,6 +26,6 @@
|
|||||||
struct process;
|
struct process;
|
||||||
|
|
||||||
void leaks_scan(struct process *process, int mode);
|
void leaks_scan(struct process *process, int mode);
|
||||||
void dump_stacks(struct process *process, void (*dump)(struct process *process, const char *outfile), const char *outfile);
|
void dump_stacks(struct process *process, void (*dump)(struct process *process, const char *outfile, int lflag), const char *outfile, int lflag);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
105
client/process.c
105
client/process.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
@ -310,7 +310,7 @@ static struct map *open_map(struct process *process, bfd_vma addr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!access(realpath, R_OK))
|
if (!access(realpath, R_OK))
|
||||||
map->binfile = bin_file_open(realpath);
|
map->binfile = bin_file_open(realpath, map->filename);
|
||||||
|
|
||||||
free(realpath);
|
free(realpath);
|
||||||
|
|
||||||
@ -335,11 +335,12 @@ static struct rb_sym *resolv_address(struct process *process, bfd_vma addr)
|
|||||||
struct rb_sym *sym;
|
struct rb_sym *sym;
|
||||||
struct map *map = open_map(process, addr);
|
struct map *map = open_map(process, addr);
|
||||||
|
|
||||||
if (!map)
|
if (map) {
|
||||||
return NULL;
|
sym = bin_file_lookup(map->binfile, addr, map->addr);
|
||||||
|
if (sym)
|
||||||
|
return sym;
|
||||||
|
}
|
||||||
|
|
||||||
sym = bin_file_lookup(map->binfile, addr, map->addr, map->filename);
|
|
||||||
if (!sym) {
|
|
||||||
sym = malloc(sizeof(*sym));
|
sym = malloc(sizeof(*sym));
|
||||||
if (!sym)
|
if (!sym)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -348,7 +349,8 @@ static struct rb_sym *resolv_address(struct process *process, bfd_vma addr)
|
|||||||
sym->sym = strdup(map->filename);
|
sym->sym = strdup(map->filename);
|
||||||
sym->refcnt = 1;
|
sym->refcnt = 1;
|
||||||
sym->binfile = NULL;
|
sym->binfile = NULL;
|
||||||
}
|
sym->si_info = 0;
|
||||||
|
|
||||||
return sym;
|
return sym;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -376,7 +378,7 @@ static void stack_resolv(struct process *process, struct stack *stack)
|
|||||||
struct regex_list *p;
|
struct regex_list *p;
|
||||||
|
|
||||||
for(p = regex_ignore_list; p; p = p->next)
|
for(p = regex_ignore_list; p; p = p->next)
|
||||||
if (stack->syms[i] && !regexec(&p->re, stack->syms[i]->sym, 0, NULL, 0)) {
|
if (stack->syms[i] && stack->syms[i]->sym && !regexec(&p->re, stack->syms[i]->sym, 0, NULL, 0)) {
|
||||||
stack->ignore = 1;
|
stack->ignore = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -514,7 +516,7 @@ static struct rb_stack *stack_add(struct process *process, pid_t pid, void *addr
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void process_dump_stack(struct process *process, struct rb_stack *this)
|
static void process_dump_stack(struct process *process, struct rb_stack *this, int lflag)
|
||||||
{
|
{
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
void *addrs;
|
void *addrs;
|
||||||
@ -524,7 +526,26 @@ static void process_dump_stack(struct process *process, struct rb_stack *this)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
for(addrs = stack->addrs, i = 0; i < stack->entries; ++i) {
|
for(addrs = stack->addrs, i = 0; i < stack->entries; ++i) {
|
||||||
if (dump_printf(" [0x%lx] %s\n", process->get_ulong(addrs), stack->syms[i] ? stack->syms[i]->sym : "?") == -1)
|
if (dump_printf(" [0x%lx]", process->get_ulong(addrs)))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!stack->syms[i]) {
|
||||||
|
if (dump_printf(" ?") == -1)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (((lflag && stack->syms[i]->si_info) || !stack->syms[i]->si_info) && stack->syms[i]->binfile) {
|
||||||
|
if (dump_printf(" %s", stack->syms[i]->binfile->mapname) == -1)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stack->syms[i]->sym) {
|
||||||
|
if (dump_printf(" %s", stack->syms[i]->sym) == -1)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dump_printf("\n") == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
addrs += process->ptr_size;
|
addrs += process->ptr_size;
|
||||||
@ -918,7 +939,7 @@ static int sort_total(const struct rb_stack **p, const struct rb_stack **q)
|
|||||||
return sort_allocations(p, q);
|
return sort_allocations(p, q);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _process_dump(struct process *process, int (*sortby)(const struct rb_stack **, const struct rb_stack **), int (*skipfunc)(struct rb_stack *), FILE *file)
|
static void _process_dump(struct process *process, int (*sortby)(const struct rb_stack **, const struct rb_stack **), int (*skipfunc)(struct rb_stack *), FILE *file, int lflag)
|
||||||
{
|
{
|
||||||
struct rb_stack **arr;
|
struct rb_stack **arr;
|
||||||
unsigned long i;
|
unsigned long i;
|
||||||
@ -990,7 +1011,7 @@ static void _process_dump(struct process *process, int (*sortby)(const struct rb
|
|||||||
if (dump_printf(" tsc: %llu\n", stack->tsc) == -1)
|
if (dump_printf(" tsc: %llu\n", stack->tsc) == -1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
process_dump_stack(process, stack);
|
process_dump_stack(process, stack, lflag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(arr);
|
free(arr);
|
||||||
@ -999,10 +1020,10 @@ skip:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void process_dump(struct process *process, int (*sortby)(const struct rb_stack **, const struct rb_stack **), int (*skipfunc)(struct rb_stack *), const char *outfile)
|
static void process_dump(struct process *process, int (*sortby)(const struct rb_stack **, const struct rb_stack **), int (*skipfunc)(struct rb_stack *), const char *outfile, int lflag)
|
||||||
{
|
{
|
||||||
if (!outfile)
|
if (!outfile)
|
||||||
_process_dump(process, sortby, skipfunc, NULL);
|
_process_dump(process, sortby, skipfunc, NULL, lflag);
|
||||||
else {
|
else {
|
||||||
FILE *file = fopen(outfile, "w");
|
FILE *file = fopen(outfile, "w");
|
||||||
|
|
||||||
@ -1010,7 +1031,7 @@ static void process_dump(struct process *process, int (*sortby)(const struct rb_
|
|||||||
fprintf(stderr, "could not open `%s' for output!\n", outfile);
|
fprintf(stderr, "could not open `%s' for output!\n", outfile);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_process_dump(process, sortby, skipfunc, file);
|
_process_dump(process, sortby, skipfunc, file, lflag);
|
||||||
|
|
||||||
fclose(file);
|
fclose(file);
|
||||||
}
|
}
|
||||||
@ -1036,49 +1057,49 @@ static int skip_zero_leaks(struct rb_stack *stack)
|
|||||||
return !stack->leaks;
|
return !stack->leaks;
|
||||||
}
|
}
|
||||||
|
|
||||||
void process_dump_sort_average(struct process *process, const char *outfile)
|
void process_dump_sort_average(struct process *process, const char *outfile, int lflag)
|
||||||
{
|
{
|
||||||
process_dump(process, sort_average, skip_zero_allocations, outfile);
|
process_dump(process, sort_average, skip_zero_allocations, outfile, lflag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void process_dump_sort_usage(struct process *process, const char *outfile)
|
void process_dump_sort_usage(struct process *process, const char *outfile, int lflag)
|
||||||
{
|
{
|
||||||
process_dump(process, sort_usage, skip_zero_allocations, outfile);
|
process_dump(process, sort_usage, skip_zero_allocations, outfile, lflag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void process_dump_sort_leaks(struct process *process, const char *outfile)
|
void process_dump_sort_leaks(struct process *process, const char *outfile, int lflag)
|
||||||
{
|
{
|
||||||
process_dump(process, sort_leaks, skip_zero_leaks, outfile);
|
process_dump(process, sort_leaks, skip_zero_leaks, outfile, lflag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void process_dump_sort_bytes_leaked(struct process *process, const char *outfile)
|
void process_dump_sort_bytes_leaked(struct process *process, const char *outfile, int lflag)
|
||||||
{
|
{
|
||||||
process_dump(process, sort_bytes_leaked, skip_zero_leaks, outfile);
|
process_dump(process, sort_bytes_leaked, skip_zero_leaks, outfile, lflag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void process_dump_sort_allocations(struct process *process, const char *outfile)
|
void process_dump_sort_allocations(struct process *process, const char *outfile, int lflag)
|
||||||
{
|
{
|
||||||
process_dump(process, sort_allocations, skip_zero_allocations, outfile);
|
process_dump(process, sort_allocations, skip_zero_allocations, outfile, lflag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void process_dump_sort_total(struct process *process, const char *outfile)
|
void process_dump_sort_total(struct process *process, const char *outfile, int lflag)
|
||||||
{
|
{
|
||||||
process_dump(process, sort_total, skip_zero_allocations, outfile);
|
process_dump(process, sort_total, skip_zero_allocations, outfile, lflag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void process_dump_sort_tsc(struct process *process, const char *outfile)
|
void process_dump_sort_tsc(struct process *process, const char *outfile, int lflag)
|
||||||
{
|
{
|
||||||
process_dump(process, sort_tsc, skip_zero_allocations, outfile);
|
process_dump(process, sort_tsc, skip_zero_allocations, outfile, lflag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void process_dump_sort_mismatched(struct process *process, const char *outfile)
|
void process_dump_sort_mismatched(struct process *process, const char *outfile, int lflag)
|
||||||
{
|
{
|
||||||
process_dump(process, sort_mismatched, skip_non_mismatched, outfile);
|
process_dump(process, sort_mismatched, skip_non_mismatched, outfile, lflag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void process_dump_stacks(struct process *process, const char *outfile)
|
void process_dump_stacks(struct process *process, const char *outfile, int lflag)
|
||||||
{
|
{
|
||||||
process_dump(process, sort_allocations, skip_none, outfile);
|
process_dump(process, sort_allocations, skip_none, outfile, lflag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *process_scan(struct process *process, void *leaks, uint32_t payload_len)
|
void *process_scan(struct process *process, void *leaks, uint32_t payload_len)
|
||||||
@ -1406,31 +1427,31 @@ void process_dump_sortby(struct process *process)
|
|||||||
{
|
{
|
||||||
switch(options.sort_by) {
|
switch(options.sort_by) {
|
||||||
case OPT_SORT_AVERAGE:
|
case OPT_SORT_AVERAGE:
|
||||||
_process_dump(process, sort_average, skip_zero_allocations, options.output);
|
_process_dump(process, sort_average, skip_zero_allocations, options.output, options.lflag);
|
||||||
break;
|
break;
|
||||||
case OPT_SORT_BYTES_LEAKED:
|
case OPT_SORT_BYTES_LEAKED:
|
||||||
_process_dump(process, sort_bytes_leaked, skip_zero_leaks, options.output);
|
_process_dump(process, sort_bytes_leaked, skip_zero_leaks, options.output, options.lflag);
|
||||||
break;
|
break;
|
||||||
case OPT_SORT_LEAKS:
|
case OPT_SORT_LEAKS:
|
||||||
_process_dump(process, sort_leaks, skip_zero_leaks, options.output);
|
_process_dump(process, sort_leaks, skip_zero_leaks, options.output, options.lflag);
|
||||||
break;
|
break;
|
||||||
case OPT_SORT_STACKS:
|
case OPT_SORT_STACKS:
|
||||||
_process_dump(process, sort_allocations, skip_none, options.output);
|
_process_dump(process, sort_allocations, skip_none, options.output, options.lflag);
|
||||||
break;
|
break;
|
||||||
case OPT_SORT_TOTAL:
|
case OPT_SORT_TOTAL:
|
||||||
_process_dump(process, sort_total, skip_none, options.output);
|
_process_dump(process, sort_total, skip_none, options.output, options.lflag);
|
||||||
break;
|
break;
|
||||||
case OPT_SORT_TSC:
|
case OPT_SORT_TSC:
|
||||||
_process_dump(process, sort_tsc, skip_zero_allocations, options.output);
|
_process_dump(process, sort_tsc, skip_zero_allocations, options.output, options.lflag);
|
||||||
break;
|
break;
|
||||||
case OPT_SORT_USAGE:
|
case OPT_SORT_USAGE:
|
||||||
_process_dump(process, sort_usage, skip_zero_allocations, options.output);
|
_process_dump(process, sort_usage, skip_zero_allocations, options.output, options.lflag);
|
||||||
break;
|
break;
|
||||||
case OPT_SORT_MISMATCHED:
|
case OPT_SORT_MISMATCHED:
|
||||||
_process_dump(process, sort_mismatched, skip_non_mismatched, options.output);
|
_process_dump(process, sort_mismatched, skip_non_mismatched, options.output, options.lflag);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
_process_dump(process, sort_allocations, skip_zero_allocations, options.output);
|
_process_dump(process, sort_allocations, skip_zero_allocations, options.output, options.lflag);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
@ -102,15 +102,15 @@ void process_detach(struct process *process);
|
|||||||
unsigned long process_leaks_scan(struct process *process, int mode);
|
unsigned long process_leaks_scan(struct process *process, int mode);
|
||||||
|
|
||||||
void process_dump_sortby(struct process *process);
|
void process_dump_sortby(struct process *process);
|
||||||
void process_dump_sort_average(struct process *process, const char *outfile);
|
void process_dump_sort_average(struct process *process, const char *outfile, int lflag);
|
||||||
void process_dump_sort_usage(struct process *process, const char *outfile);
|
void process_dump_sort_usage(struct process *process, const char *outfile, int lflag);
|
||||||
void process_dump_sort_leaks(struct process *process, const char *outfile);
|
void process_dump_sort_leaks(struct process *process, const char *outfile, int lflag);
|
||||||
void process_dump_sort_bytes_leaked(struct process *process, const char *outfile);
|
void process_dump_sort_bytes_leaked(struct process *process, const char *outfile, int lflag);
|
||||||
void process_dump_sort_allocations(struct process *process, const char *outfile);
|
void process_dump_sort_allocations(struct process *process, const char *outfile, int lflag);
|
||||||
void process_dump_sort_total(struct process *process, const char *outfile);
|
void process_dump_sort_total(struct process *process, const char *outfile, int lflag);
|
||||||
void process_dump_sort_tsc(struct process *process, const char *outfile);
|
void process_dump_sort_tsc(struct process *process, const char *outfile, int lflag);
|
||||||
void process_dump_sort_mismatched(struct process *process, const char *outfile);
|
void process_dump_sort_mismatched(struct process *process, const char *outfile, int lflag);
|
||||||
void process_dump_stacks(struct process *process, const char *outfile);
|
void process_dump_stacks(struct process *process, const char *outfile, int lflag);
|
||||||
|
|
||||||
void add_ignore_regex(regex_t *re);
|
void add_ignore_regex(regex_t *re);
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
@ -44,7 +44,7 @@
|
|||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "process.h"
|
#include "process.h"
|
||||||
|
|
||||||
#define PROGNAME "memtrace"
|
#define PROGNAME "mtrace"
|
||||||
|
|
||||||
struct cmd_opt {
|
struct cmd_opt {
|
||||||
const char *name;
|
const char *name;
|
||||||
@ -125,7 +125,7 @@ static struct cmd_opt cmds[] = {
|
|||||||
1,
|
1,
|
||||||
do_dump,
|
do_dump,
|
||||||
"dump stack trees",
|
"dump stack trees",
|
||||||
"[sort-by] [<pid>] [>filename]",
|
"[sort-by] [<pid>] [-l] [>filename]",
|
||||||
dump_opts
|
dump_opts
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -560,8 +560,10 @@ static int do_dump(struct cmd_opt *cmd, int argc, const char *argv[])
|
|||||||
struct cmd_opt *options = cmd->options;;
|
struct cmd_opt *options = cmd->options;;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
void *data;
|
void *data;
|
||||||
|
int arg = 1;
|
||||||
|
int lflag = 0;
|
||||||
|
|
||||||
if (!argv[1]) {
|
if (!argv[arg]) {
|
||||||
process = client_first_process();
|
process = client_first_process();
|
||||||
if (!process) {
|
if (!process) {
|
||||||
fprintf(stderr, "no process available\n");
|
fprintf(stderr, "no process available\n");
|
||||||
@ -571,17 +573,18 @@ static int do_dump(struct cmd_opt *cmd, int argc, const char *argv[])
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
data = NULL;
|
data = NULL;
|
||||||
len = strlen(argv[1]);
|
len = strlen(argv[arg]);
|
||||||
|
|
||||||
for(i = 0; options[i].name; ++i) {
|
for(i = 0; options[i].name; ++i) {
|
||||||
if (options[i].match_len <= len && !strncmp(options[i].name, argv[1], len)) {
|
if (options[i].match_len <= len && !strncmp(options[i].name, argv[1], len)) {
|
||||||
data = options[i].data;
|
data = options[i].data;
|
||||||
|
arg++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
process = client_find_process(atoi(argv[1]));
|
process = client_find_process(atoi(argv[arg++]));
|
||||||
if (!process) {
|
if (!process) {
|
||||||
fprintf(stderr, "%s: unknown sort criteria\n", cmd->name);
|
fprintf(stderr, "%s: unknown sort criteria\n", cmd->name);
|
||||||
return -1;
|
return -1;
|
||||||
@ -589,13 +592,18 @@ static int do_dump(struct cmd_opt *cmd, int argc, const char *argv[])
|
|||||||
data = process_dump_sort_allocations;
|
data = process_dump_sort_allocations;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
process = get_process(argv[2]);
|
process = get_process(argv[arg++]);
|
||||||
if (!process)
|
if (!process)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (argc < arg) {
|
||||||
|
if (!strcmp(argv[arg], "-l"))
|
||||||
|
lflag = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dump_stacks(process, data, outfile);
|
dump_stacks(process, data, outfile, lflag);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
2
common.c
2
common.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
2
common.h
2
common.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
28
configure
vendored
28
configure
vendored
@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.69 for mtrace 0.3.
|
# Generated by GNU Autoconf 2.69 for mtrace-ng 0.4.
|
||||||
#
|
#
|
||||||
# Report bugs to <stefani@seibold.net>.
|
# Report bugs to <stefani@seibold.net>.
|
||||||
#
|
#
|
||||||
@ -588,10 +588,10 @@ MFLAGS=
|
|||||||
MAKEFLAGS=
|
MAKEFLAGS=
|
||||||
|
|
||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='mtrace'
|
PACKAGE_NAME='mtrace-ng'
|
||||||
PACKAGE_TARNAME='mtrace'
|
PACKAGE_TARNAME='mtrace-ng'
|
||||||
PACKAGE_VERSION='0.3'
|
PACKAGE_VERSION='0.4'
|
||||||
PACKAGE_STRING='mtrace 0.3'
|
PACKAGE_STRING='mtrace-ng 0.4'
|
||||||
PACKAGE_BUGREPORT='stefani@seibold.net'
|
PACKAGE_BUGREPORT='stefani@seibold.net'
|
||||||
PACKAGE_URL=''
|
PACKAGE_URL=''
|
||||||
|
|
||||||
@ -1329,7 +1329,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures mtrace 0.3 to adapt to many kinds of systems.
|
\`configure' configures mtrace-ng 0.4 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@ -1377,7 +1377,7 @@ Fine tuning of the installation directories:
|
|||||||
--infodir=DIR info documentation [DATAROOTDIR/info]
|
--infodir=DIR info documentation [DATAROOTDIR/info]
|
||||||
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
|
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
|
||||||
--mandir=DIR man documentation [DATAROOTDIR/man]
|
--mandir=DIR man documentation [DATAROOTDIR/man]
|
||||||
--docdir=DIR documentation root [DATAROOTDIR/doc/mtrace]
|
--docdir=DIR documentation root [DATAROOTDIR/doc/mtrace-ng]
|
||||||
--htmldir=DIR html documentation [DOCDIR]
|
--htmldir=DIR html documentation [DOCDIR]
|
||||||
--dvidir=DIR dvi documentation [DOCDIR]
|
--dvidir=DIR dvi documentation [DOCDIR]
|
||||||
--pdfdir=DIR pdf documentation [DOCDIR]
|
--pdfdir=DIR pdf documentation [DOCDIR]
|
||||||
@ -1399,7 +1399,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of mtrace 0.3:";;
|
short | recursive ) echo "Configuration of mtrace-ng 0.4:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@ -1518,7 +1518,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
mtrace configure 0.3
|
mtrace-ng configure 0.4
|
||||||
generated by GNU Autoconf 2.69
|
generated by GNU Autoconf 2.69
|
||||||
|
|
||||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
@ -2124,7 +2124,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by mtrace $as_me 0.3, which was
|
It was created by mtrace-ng $as_me 0.4, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
@ -12005,8 +12005,8 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='mtrace'
|
PACKAGE='mtrace-ng'
|
||||||
VERSION='0.3'
|
VERSION='0.4'
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
@ -13844,7 +13844,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by mtrace $as_me 0.3, which was
|
This file was extended by mtrace-ng $as_me 0.4, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@ -13910,7 +13910,7 @@ _ACEOF
|
|||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
mtrace config.status 0.3
|
mtrace-ng config.status 0.4
|
||||||
configured by $0, generated by GNU Autoconf 2.69,
|
configured by $0, generated by GNU Autoconf 2.69,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# -*- Autoconf -*-
|
# -*- Autoconf -*-
|
||||||
# This file is part of mtrace.
|
# This file is part of mtrace-ng.
|
||||||
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
# Copyright (C) 2010,2013 Petr Machata, Red Hat Inc.
|
# Copyright (C) 2010,2013 Petr Machata, Red Hat Inc.
|
||||||
# Copyright (C) 2010,2011 Joe Damato
|
# Copyright (C) 2010,2011 Joe Damato
|
||||||
@ -24,7 +24,7 @@
|
|||||||
# Process this file with autoconf to produce a configure script.
|
# Process this file with autoconf to produce a configure script.
|
||||||
AC_PREREQ(2.65)
|
AC_PREREQ(2.65)
|
||||||
|
|
||||||
AC_INIT([mtrace],[0.3],[stefani@seibold.net])
|
AC_INIT([mtrace-ng],[0.4],[stefani@seibold.net])
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
AC_CONFIG_SRCDIR(main.c)
|
AC_CONFIG_SRCDIR(main.c)
|
||||||
AC_CONFIG_MACRO_DIR([config/m4])
|
AC_CONFIG_MACRO_DIR([config/m4])
|
||||||
|
|||||||
2
debug.c
2
debug.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
2
debug.h
2
debug.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
2
dict.c
2
dict.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
2
dict.h
2
dict.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
2
dwarf.c
2
dwarf.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the libunwind source
|
* This file is based on the libunwind source
|
||||||
*
|
*
|
||||||
|
|||||||
2
dwarf.h
2
dwarf.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the libunwind source
|
* This file is based on the libunwind source
|
||||||
*
|
*
|
||||||
|
|||||||
2
event.c
2
event.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
2
event.h
2
event.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
2
list.h
2
list.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on linux kernel list.h
|
* This file is based on linux kernel list.h
|
||||||
*
|
*
|
||||||
|
|||||||
2
main.c
2
main.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
2
main.h
2
main.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
2
mtelf.c
2
mtelf.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
2
mtelf.h
2
mtelf.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
@ -18,13 +18,13 @@
|
|||||||
.\"
|
.\"
|
||||||
.TH MTRACE "12" "Oct 2015" "" "User Commands"
|
.TH MTRACE "12" "Oct 2015" "" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
mtrace \- A dynamic memory allocation tracer
|
mtrace-ng \- A dynamic memory allocation tracer
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.\"
|
.\"
|
||||||
.\" ---------------------------------------------------------------------------
|
.\" ---------------------------------------------------------------------------
|
||||||
.\"
|
.\"
|
||||||
.PP
|
.PP
|
||||||
.BR mtrace " \-t|\-\-trace
|
.BR mtrace-ng " \-t|\-\-trace
|
||||||
.\"
|
.\"
|
||||||
.\" Output formatting:
|
.\" Output formatting:
|
||||||
.\"
|
.\"
|
||||||
@ -58,7 +58,7 @@ mtrace \- A dynamic memory allocation tracer
|
|||||||
.\" ---------------------------------------------------------------------------
|
.\" ---------------------------------------------------------------------------
|
||||||
.\"
|
.\"
|
||||||
.PP
|
.PP
|
||||||
.BR mtrace " \-t|\-\-trace \-r|\-\-remote \fIaddr\fR"
|
.BR mtrace-ng " \-t|\-\-trace \-r|\-\-remote \fIaddr\fR"
|
||||||
[\-P|\-\-port \fInum\fR]
|
[\-P|\-\-port \fInum\fR]
|
||||||
[\-w|\-\-wait]
|
[\-w|\-\-wait]
|
||||||
.\"
|
.\"
|
||||||
@ -88,7 +88,7 @@ mtrace \- A dynamic memory allocation tracer
|
|||||||
.\" ---------------------------------------------------------------------------
|
.\" ---------------------------------------------------------------------------
|
||||||
.\"
|
.\"
|
||||||
.PP
|
.PP
|
||||||
.BR mtrace
|
.BR mtrace-ng
|
||||||
[\-r|\-\-remote \fIaddr\fR]
|
[\-r|\-\-remote \fIaddr\fR]
|
||||||
[\-P|\-\-port \fInum\fR]
|
[\-P|\-\-port \fInum\fR]
|
||||||
.\"
|
.\"
|
||||||
@ -110,11 +110,11 @@ mtrace \- A dynamic memory allocation tracer
|
|||||||
.\" ---------------------------------------------------------------------------
|
.\" ---------------------------------------------------------------------------
|
||||||
.\"
|
.\"
|
||||||
.PP
|
.PP
|
||||||
.BR mtrace " \-V|\-\-version"
|
.BR mtrace-ng " \-V|\-\-version"
|
||||||
.PP
|
.PP
|
||||||
.BR mtrace " \-h|\-\-help"
|
.BR mtrace-ng " \-h|\-\-help"
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.B mtrace
|
.B mtrace-ng
|
||||||
is a dynamic memory tracer, debugger and statistical analyses tool for C and
|
is a dynamic memory tracer, debugger and statistical analyses tool for C and
|
||||||
C++. It traces, records and reports all dynamic memory functions which are
|
C++. It traces, records and reports all dynamic memory functions which are
|
||||||
called by the specified
|
called by the specified
|
||||||
@ -122,7 +122,7 @@ called by the specified
|
|||||||
or
|
or
|
||||||
.I process
|
.I process
|
||||||
until it exits or
|
until it exits or
|
||||||
.B mtrace
|
.B mtrace-ng
|
||||||
is terminated.
|
is terminated.
|
||||||
|
|
||||||
Unlike other memory tracers, the trace will be performed by setting
|
Unlike other memory tracers, the trace will be performed by setting
|
||||||
@ -130,7 +130,7 @@ breakpoints on each know dynamic allocation function. So no additional
|
|||||||
library nor any kind of instrumentation or recompiling is needed to trace
|
library nor any kind of instrumentation or recompiling is needed to trace
|
||||||
and hunt for memory leaks.
|
and hunt for memory leaks.
|
||||||
|
|
||||||
.B mtrace
|
.B mtrace-ng
|
||||||
is able to find no longer referenced memory allocation by scanning all
|
is able to find no longer referenced memory allocation by scanning all
|
||||||
writable memory mappings of the program against the pointer of an allocation.
|
writable memory mappings of the program against the pointer of an allocation.
|
||||||
If the memory address will be not found during a scan there is a high change
|
If the memory address will be not found during a scan there is a high change
|
||||||
@ -166,36 +166,36 @@ void operator delete[](void* p, const std::nothrow_t& nt) __THROW
|
|||||||
.fi
|
.fi
|
||||||
.in
|
.in
|
||||||
.PP
|
.PP
|
||||||
.B mtrace
|
.B mtrace-ng
|
||||||
offers three different kind of working modes. A non interactive mode, a
|
offers three different kind of working modes. A non interactive mode, a
|
||||||
server mode and a interactive client mode.
|
server mode and a interactive client mode.
|
||||||
|
|
||||||
The most common mode is the non interactive mode, which allows to run
|
The most common mode is the non interactive mode, which allows to run
|
||||||
and/or attach to a process, similar to strace.
|
and/or attach to a process, similar to strace.
|
||||||
.B mtrace
|
.B mtrace-ng
|
||||||
will show all open allocations when the traced program exists or
|
will show all open allocations when the traced program exists or
|
||||||
.B mtrace
|
.B mtrace-ng
|
||||||
will be terminated.
|
will be terminated.
|
||||||
|
|
||||||
For system with memory restrictions or for using in a cross architecture
|
For system with memory restrictions or for using in a cross architecture
|
||||||
environment,
|
environment,
|
||||||
.B mtrace
|
.B mtrace-ng
|
||||||
offers a server mode which moves the memory bookkeeping and address resolution
|
offers a server mode which moves the memory bookkeeping and address resolution
|
||||||
outside to a connected client. In this case the server must be started on
|
outside to a connected client. In this case the server must be started on
|
||||||
target system where the program is executed. Then the client has to be started
|
target system where the program is executed. Then the client has to be started
|
||||||
on the remote host system.
|
on the remote host system.
|
||||||
|
|
||||||
To get a more detailed information about the dynamic memory consumption
|
To get a more detailed information about the dynamic memory consumption
|
||||||
.B mtrace
|
.B mtrace-ng
|
||||||
can be started in an interactive mode. This mode is available for client
|
can be started in an interactive mode. This mode is available for client
|
||||||
mode or when attaching to a process. See the section \fBINTERACTIVE MODE\fR
|
mode or when attaching to a process. See the section \fBINTERACTIVE MODE\fR
|
||||||
to learn more about the interactive commands in
|
to learn more about the interactive commands in
|
||||||
\fBmtrace\fR.
|
\fBmtrace-ng\fR.
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.PP
|
.PP
|
||||||
.IP "\-a, \-\-autoscan"
|
.IP "\-a, \-\-autoscan"
|
||||||
Scan all writeable memory mappings of the process for leaked pointers on exit
|
Scan all writeable memory mappings of the process for leaked pointers on exit
|
||||||
of the traced program or termination of \fBmtrace\fR. If the pointer value of an
|
of the traced program or termination of \fBmtrace-ng\fR. If the pointer value of an
|
||||||
open allocated memory block will be not found on any aligned memory addresses,
|
open allocated memory block will be not found on any aligned memory addresses,
|
||||||
it will be marked and reported as leaked. The scan can take some time,
|
it will be marked and reported as leaked. The scan can take some time,
|
||||||
depending on the size of the writeable memory mappings and the number of open
|
depending on the size of the writeable memory mappings and the number of open
|
||||||
@ -212,16 +212,16 @@ by passing more than one \-b option.
|
|||||||
This option is valid in any mode except the client mode. Its used for locating
|
This option is valid in any mode except the client mode. Its used for locating
|
||||||
libraries for an attached process which are linked with relative paths. In this
|
libraries for an attached process which are linked with relative paths. In this
|
||||||
case
|
case
|
||||||
.B mtrace
|
.B mtrace-ng
|
||||||
does not know the origin state of the current working directory and need
|
does not know the origin state of the current working directory and need
|
||||||
to manually add this information.
|
to manually add this information.
|
||||||
.IP "\-D, \-\-debug \fImask\fR"
|
.IP "\-D, \-\-debug \fImask\fR"
|
||||||
Show debugging output of
|
Show debugging output of
|
||||||
.B mtrace
|
.B mtrace-ng
|
||||||
itself. \fImask\fR is a number
|
itself. \fImask\fR is a number
|
||||||
describing which debug messages should be displayed. Use the \-Dh option
|
describing which debug messages should be displayed. Use the \-Dh option
|
||||||
to see what can be used. This option is only available when
|
to see what can be used. This option is only available when
|
||||||
.B mtrace
|
.B mtrace-ng
|
||||||
was build with --enable-debug.
|
was build with --enable-debug.
|
||||||
.IP "\-d, \-\-depth \fIlevel\fR"
|
.IP "\-d, \-\-depth \fIlevel\fR"
|
||||||
Do backtrace of \fIlevel\fR stack frames for each memory allocation function.
|
Do backtrace of \fIlevel\fR stack frames for each memory allocation function.
|
||||||
@ -233,23 +233,23 @@ Trace child processes as they are created by one of the currently traced
|
|||||||
processes as a result of the fork(2) system call.
|
processes as a result of the fork(2) system call.
|
||||||
.IP "\-F, \-\-config \fIpath"
|
.IP "\-F, \-\-config \fIpath"
|
||||||
Set the config file. For a detailed description of this file see
|
Set the config file. For a detailed description of this file see
|
||||||
mtrace.conf(5). It is possible to pass several config files by passing more
|
mtrace-ng.conf(5). It is possible to pass several config files by passing more
|
||||||
than one \-F option. If no -F is given,
|
than one \-F option. If no -F is given,
|
||||||
.B mtrace
|
.B mtrace-ng
|
||||||
will look up for one of the default files in the following order:
|
will look up for one of the default files in the following order:
|
||||||
$HOME/.mtrace,
|
$HOME/.mtrace-ng,
|
||||||
$XDG_CONFIG_HOME/mtrace,
|
$XDG_CONFIG_HOME/mtrace-ng,
|
||||||
SYSCONFDIR/mtrace.conf,
|
SYSCONFDIR/mtrace-ng.conf,
|
||||||
/etc/mtrace.conf
|
/etc/mtrace-ng.conf
|
||||||
.IP "\-h, \-\-help"
|
.IP "\-h, \-\-help"
|
||||||
Show a summary of the options to \fBmtrace\fR and exit.
|
Show a summary of the options to \fBmtrace-ng\fR and exit.
|
||||||
.IP "\-i, \-\-interactive"
|
.IP "\-i, \-\-interactive"
|
||||||
Enables the interactive mode for client or when attaching to a process. See
|
Enables the interactive mode for client or when attaching to a process. See
|
||||||
the section \fBINTERACTIVE MODE\fR to learn more about the interactive commands
|
the section \fBINTERACTIVE MODE\fR to learn more about the interactive commands
|
||||||
in this mode.
|
in this mode.
|
||||||
.IP "\-k, \-\-kill"
|
.IP "\-k, \-\-kill"
|
||||||
Kill \fBmtrace\fR in case of a bookkeeping error. This options is intended for
|
Kill \fBmtrace-ng\fR in case of a bookkeeping error. This options is intended for
|
||||||
.B mtrace
|
.B mtrace-ng
|
||||||
development only!
|
development only!
|
||||||
.IP "\-O, \-\-omit \fIfilename"
|
.IP "\-O, \-\-omit \fIfilename"
|
||||||
Do not place any dynamic memory interception breakpoints in the given file.
|
Do not place any dynamic memory interception breakpoints in the given file.
|
||||||
@ -281,10 +281,10 @@ It is possible to attach to several processes by passing more than one
|
|||||||
.IP "\-P, \-\-port \fInum"
|
.IP "\-P, \-\-port \fInum"
|
||||||
Set the port number for client or server mode. The default port number is 4576.
|
Set the port number for client or server mode. The default port number is 4576.
|
||||||
.IP "\-r, \-\-remote \fIaddr"
|
.IP "\-r, \-\-remote \fIaddr"
|
||||||
Run \fBmtrace\fR in remote mode. Use \fIaddr\fR as socket path or address. If
|
Run \fBmtrace-ng\fR in remote mode. Use \fIaddr\fR as socket path or address. If
|
||||||
\fIaddr\fR begins with / or . it will assumed a named socket, otherwise it
|
\fIaddr\fR begins with / or . it will assumed a named socket, otherwise it
|
||||||
will be passed to getaddrinfo(3), which handles any kind of hostname, IPv4 or
|
will be passed to getaddrinfo(3), which handles any kind of hostname, IPv4 or
|
||||||
IPv6 addresses. If this option is passed in conjunction with -t, mtrace will be
|
IPv6 addresses. If this option is passed in conjunction with -t, mtrace-ng will be
|
||||||
execute in server mode, otherwise in client mode.
|
execute in server mode, otherwise in client mode.
|
||||||
.IP "\-s, \-\-sortby keyword"
|
.IP "\-s, \-\-sortby keyword"
|
||||||
Sort the output of the stack backtraces by keyword. Valid keywords are:
|
Sort the output of the stack backtraces by keyword. Valid keywords are:
|
||||||
@ -344,12 +344,12 @@ Sort by number of bytes in use of all open allocations.
|
|||||||
.RE
|
.RE
|
||||||
.RE
|
.RE
|
||||||
.IP "\-S, \-\-sanity"
|
.IP "\-S, \-\-sanity"
|
||||||
Check mismatching operations against new/new[] allocations. This options also
|
Check mismatching operations against new/delete. This options also
|
||||||
sets the sort-by options to mismatched.
|
sets the sort-by options to mismatched.
|
||||||
.IP "\-t, \-\-trace"
|
.IP "\-t, \-\-trace"
|
||||||
Run \fBmtrace\fR in trace mode. In this mode all attached processes will run under
|
Run \fBmtrace-ng\fR in trace mode. In this mode all attached processes will run under
|
||||||
the control of \fBmtrace\fR and all dynamic memory function calls will be traced.
|
the control of \fBmtrace-ng\fR and all dynamic memory function calls will be traced.
|
||||||
If this options is not given, \fBmtrace\fR will run in client mode.
|
If this options is not given, \fBmtrace-ng\fR will run in client mode.
|
||||||
.IP "\-u, \-\-user \fIusername\fR"
|
.IP "\-u, \-\-user \fIusername\fR"
|
||||||
Run command with the userid, groupid and supplementary groups of
|
Run command with the userid, groupid and supplementary groups of
|
||||||
.IR username .
|
.IR username .
|
||||||
@ -359,7 +359,7 @@ correct execution of setuid and/or setgid binaries.
|
|||||||
Be verbose and display more details about what going on. This option can be
|
Be verbose and display more details about what going on. This option can be
|
||||||
repeated for a more detailed view.
|
repeated for a more detailed view.
|
||||||
.IP "\-V, \-\-version"
|
.IP "\-V, \-\-version"
|
||||||
Show the version number of \fBmtrace\fR and exit.
|
Show the version number of \fBmtrace-ng\fR and exit.
|
||||||
.IP "\-w, \-\-wait"
|
.IP "\-w, \-\-wait"
|
||||||
This option stops the execution of the traced processes until a client is
|
This option stops the execution of the traced processes until a client is
|
||||||
connected to the server. So this option is only valid in server mode.
|
connected to the server. So this option is only valid in server mode.
|
||||||
@ -425,7 +425,7 @@ Shows the list of currently traced processes.
|
|||||||
|
|
||||||
.IP "quit"
|
.IP "quit"
|
||||||
Close the client connection and exit the
|
Close the client connection and exit the
|
||||||
.B mtrace
|
.B mtrace-ng
|
||||||
debugger.
|
debugger.
|
||||||
|
|
||||||
.IP "reset \fIpid\fR"
|
.IP "reset \fIpid\fR"
|
||||||
@ -494,17 +494,17 @@ for more open issues.
|
|||||||
If you would like to report a bug, send a mail to stefani@seibold.net
|
If you would like to report a bug, send a mail to stefani@seibold.net
|
||||||
.SH FILES
|
.SH FILES
|
||||||
.TP
|
.TP
|
||||||
.I /etc/mtrace.conf\fR or \fISYSCONFDIR/mtrace.conf
|
.I /etc/mtrace-ng.conf\fR or \fISYSCONFDIR/mtrace-ng.conf
|
||||||
System configuration file
|
System configuration file
|
||||||
.TP
|
.TP
|
||||||
.I $HOME/.mtrace\fR or \fI$XDG_CONFIG_HOME/mtrace
|
.I $HOME/.mtrace-ng\fR or \fI$XDG_CONFIG_HOME/mtrace-ng
|
||||||
Personal config file, overrides system configuration file
|
Personal config file, overrides system configuration file
|
||||||
.PP
|
.PP
|
||||||
|
|
||||||
See mtrace.conf(5) for details on the syntax of this file.
|
See mtrace-ng.conf(5) for details on the syntax of this file.
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
Stefani Seibold <stefani@seibold.net>
|
Stefani Seibold <stefani@seibold.net>
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
.BR mtrace.conf(5),
|
.BR mtrace-ng.conf(5),
|
||||||
.BR ptrace(2),
|
.BR ptrace(2),
|
||||||
.BR perf(1)
|
.BR perf(1)
|
||||||
@ -16,15 +16,15 @@
|
|||||||
.\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
.\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
||||||
.\" 02110-1301 USA
|
.\" 02110-1301 USA
|
||||||
.\"
|
.\"
|
||||||
.TH mtrace.conf "5" "May 2015" "" "mtrace configuration file"
|
.TH mtrace-ng.conf "5" "May 2015" "" "mtrace-ng configuration file"
|
||||||
.SH "NAME"
|
.SH "NAME"
|
||||||
.LP
|
.LP
|
||||||
\fBmtrace.conf\fR \- Configuration file for \fBmtrace(1)\fR.
|
\fBmtrace-ng.conf\fR \- Configuration file for \fBmtrace-ng(1)\fR.
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
|
||||||
This manual page describes \fBmtrace.conf\fR, a file that contains
|
This manual page describes \fBmtrace-ng.conf\fR, a file that contains
|
||||||
configuration information for \fBmtrace(1)\fR to use.
|
configuration information for \fBmtrace-ng(1)\fR to use.
|
||||||
|
|
||||||
Each line of a configuration file describes at most a single item.
|
Each line of a configuration file describes at most a single item.
|
||||||
Lines composed entirely of white space are ignored, as are lines
|
Lines composed entirely of white space are ignored, as are lines
|
||||||
2
mtrace.h
2
mtrace.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
32
options.c
32
options.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
@ -60,7 +60,7 @@ static struct opt_p_t *opt_p_last;
|
|||||||
static struct opt_b_t *opt_b_last;
|
static struct opt_b_t *opt_b_last;
|
||||||
static struct opt_O_t *opt_O_last;
|
static struct opt_O_t *opt_O_last;
|
||||||
|
|
||||||
static char *progname; /* Program name (`mtrace') */
|
static char *progname; /* Program name (mtrace-ng) */
|
||||||
|
|
||||||
static void err_usage(void)
|
static void err_usage(void)
|
||||||
{
|
{
|
||||||
@ -93,8 +93,9 @@ static void usage(void)
|
|||||||
" -i, --interactive interactive client mode\n"
|
" -i, --interactive interactive client mode\n"
|
||||||
#endif
|
#endif
|
||||||
" -O, --omit=FILE do not place breakpoint in this file\n"
|
" -O, --omit=FILE do not place breakpoint in this file\n"
|
||||||
" -k, --kill abort mtrace due unexpected error conditon\n"
|
" -k, --kill abort mtrace-ng due unexpected error conditon\n"
|
||||||
" -l, --logfile use log file instead of socket connection\n"
|
" -l, --logfile use log file instead of socket connection\n"
|
||||||
|
" -L, --long long dump including map filename\n"
|
||||||
" -n, --nocpp disable trace of c++ allocation operators (faster for libstdc++)\n"
|
" -n, --nocpp disable trace of c++ allocation operators (faster for libstdc++)\n"
|
||||||
" -N, --nohwbp disable hardware breakpoint support\n"
|
" -N, --nohwbp disable hardware breakpoint support\n"
|
||||||
#ifndef DISABLE_CLIENT
|
#ifndef DISABLE_CLIENT
|
||||||
@ -107,7 +108,7 @@ static void usage(void)
|
|||||||
" -s, --sort-by=type sort dump by type:\n"
|
" -s, --sort-by=type sort dump by type:\n"
|
||||||
" allocations, average, bytes-leaked, leaks, stacks, total, tsc, usage\n"
|
" allocations, average, bytes-leaked, leaks, stacks, total, tsc, usage\n"
|
||||||
#endif
|
#endif
|
||||||
" -S, --sanity check mismatching operations against new/new[] allocations\n"
|
" -S, --sanity check mismatching operations against new/delete\n"
|
||||||
" -t, --trace trace mode\n"
|
" -t, --trace trace mode\n"
|
||||||
" -u, --user=USERNAME run command with the userid, groupid of username\n"
|
" -u, --user=USERNAME run command with the userid, groupid of username\n"
|
||||||
" -V, --version output version information and exit\n"
|
" -V, --version output version information and exit\n"
|
||||||
@ -209,7 +210,7 @@ static void def_config(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (path) {
|
if (path) {
|
||||||
if (asprintf(&filename, "%s/.mtrace", path) != -1) {
|
if (asprintf(&filename, "%s/.mtrace-ng", path) != -1) {
|
||||||
if (!add_opt_F(filename))
|
if (!add_opt_F(filename))
|
||||||
return;
|
return;
|
||||||
free(filename);
|
free(filename);
|
||||||
@ -218,20 +219,20 @@ static void def_config(void)
|
|||||||
|
|
||||||
path = getenv("XDG_CONFIG_HOME");
|
path = getenv("XDG_CONFIG_HOME");
|
||||||
if (path) {
|
if (path) {
|
||||||
if (asprintf(&filename, "%s/mtrace", path) != -1) {
|
if (asprintf(&filename, "%s/mtrace-ng", path) != -1) {
|
||||||
if (!add_opt_F(filename))
|
if (!add_opt_F(filename))
|
||||||
return;
|
return;
|
||||||
free(filename);
|
free(filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (asprintf(&filename, "%s/mtrace.conf", SYSCONFDIR) != -1) {
|
if (asprintf(&filename, "%s/mtrace-ng.conf", SYSCONFDIR) != -1) {
|
||||||
if (!add_opt_F(filename))
|
if (!add_opt_F(filename))
|
||||||
return;
|
return;
|
||||||
free(filename);
|
free(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (asprintf(&filename, "%s/mtrace.conf", "/etc") != -1) {
|
if (asprintf(&filename, "%s/mtrace-ng.conf", "/etc") != -1) {
|
||||||
if (!add_opt_F(filename))
|
if (!add_opt_F(filename))
|
||||||
return;
|
return;
|
||||||
free(filename);
|
free(filename);
|
||||||
@ -295,6 +296,7 @@ char **process_options(int argc, char **argv)
|
|||||||
options.kill = 0;
|
options.kill = 0;
|
||||||
options.nocpp = 0;
|
options.nocpp = 0;
|
||||||
options.nohwbp = 0;
|
options.nohwbp = 0;
|
||||||
|
options.lflag = 0;
|
||||||
|
|
||||||
for(;;) {
|
for(;;) {
|
||||||
int c;
|
int c;
|
||||||
@ -316,6 +318,9 @@ char **process_options(int argc, char **argv)
|
|||||||
#endif
|
#endif
|
||||||
{ "kill", 0, 0, 'k' },
|
{ "kill", 0, 0, 'k' },
|
||||||
{ "logfile", 1, 0, 'l' },
|
{ "logfile", 1, 0, 'l' },
|
||||||
|
#ifndef DISABLE_CLIENT
|
||||||
|
{ "long", 0, 0, 'L' },
|
||||||
|
#endif
|
||||||
{ "nocpp", 0, 0, 'n' },
|
{ "nocpp", 0, 0, 'n' },
|
||||||
{ "nohwbp", 0, 0, 'N' },
|
{ "nohwbp", 0, 0, 'N' },
|
||||||
#ifndef DISABLE_CLIENT
|
#ifndef DISABLE_CLIENT
|
||||||
@ -346,7 +351,11 @@ char **process_options(int argc, char **argv)
|
|||||||
#ifndef DISABLE_CLIENT
|
#ifndef DISABLE_CLIENT
|
||||||
"i"
|
"i"
|
||||||
#endif
|
#endif
|
||||||
"kLnNStVvw"
|
"k"
|
||||||
|
#ifndef DISABLE_CLIENT
|
||||||
|
"L"
|
||||||
|
#endif
|
||||||
|
"nNStVvw"
|
||||||
#ifndef DISABLE_CLIENT
|
#ifndef DISABLE_CLIENT
|
||||||
"b:"
|
"b:"
|
||||||
#endif
|
#endif
|
||||||
@ -434,6 +443,9 @@ char **process_options(int argc, char **argv)
|
|||||||
case 'l':
|
case 'l':
|
||||||
options.logfile = optarg;
|
options.logfile = optarg;
|
||||||
break;
|
break;
|
||||||
|
case 'L':
|
||||||
|
options.lflag = 1;
|
||||||
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
output = optarg;
|
output = optarg;
|
||||||
break;
|
break;
|
||||||
@ -529,7 +541,7 @@ char **process_options(int argc, char **argv)
|
|||||||
options.user = optarg;
|
options.user = optarg;
|
||||||
break;
|
break;
|
||||||
case 'V':
|
case 'V':
|
||||||
printf("mtrace version " PACKAGE_VERSION ".\n"
|
printf("mtrace-ng version " PACKAGE_VERSION ".\n"
|
||||||
"Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>.\n"
|
"Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"This software was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.\n"
|
"This software was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.\n"
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
@ -88,6 +88,7 @@ struct options_t {
|
|||||||
int debug; /* debug */
|
int debug; /* debug */
|
||||||
int nocpp; /* disable trace of c++ allocation operators */
|
int nocpp; /* disable trace of c++ allocation operators */
|
||||||
int nohwbp; /* disable hardware breakpoint support */
|
int nohwbp; /* disable hardware breakpoint support */
|
||||||
|
int lflag; /* long dump */
|
||||||
};
|
};
|
||||||
|
|
||||||
char **process_options(int argc, char **argv);
|
char **process_options(int argc, char **argv);
|
||||||
|
|||||||
2
rbtree.c
2
rbtree.c
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Red Black Trees
|
* Red Black Trees
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the linux kernel source
|
* This file is based on the linux kernel source
|
||||||
* Copyright (C) 1999 Andrea Arcangeli <andrea@suse.de>
|
* Copyright (C) 1999 Andrea Arcangeli <andrea@suse.de>
|
||||||
|
|||||||
2
rbtree.h
2
rbtree.h
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Red Black Trees
|
* Red Black Trees
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the linux kernel source
|
* This file is based on the linux kernel source
|
||||||
* Copyright (C) 1999 Andrea Arcangeli <andrea@suse.de>
|
* Copyright (C) 1999 Andrea Arcangeli <andrea@suse.de>
|
||||||
|
|||||||
6
report.c
6
report.c
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* report events to client
|
* report events to client
|
||||||
*
|
*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
@ -58,11 +58,13 @@ static int report_alloc64(struct task *task, enum mt_operation op, unsigned long
|
|||||||
if (backtrace_location_type(task) != LIBTYPE_LOADER) {
|
if (backtrace_location_type(task) != LIBTYPE_LOADER) {
|
||||||
alloc->data[i] = (uint64_t)backtrace_get_ip(task);
|
alloc->data[i] = (uint64_t)backtrace_get_ip(task);
|
||||||
|
|
||||||
|
if (!i || alloc->data[i - 1] != alloc->data[i]) {
|
||||||
if (!alloc->data[i])
|
if (!alloc->data[i])
|
||||||
break;
|
break;
|
||||||
|
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (backtrace_step(task) < 0)
|
if (backtrace_step(task) < 0)
|
||||||
break;
|
break;
|
||||||
@ -92,11 +94,13 @@ static int report_alloc32(struct task *task, enum mt_operation op, unsigned long
|
|||||||
if (backtrace_location_type(task) != LIBTYPE_LOADER) {
|
if (backtrace_location_type(task) != LIBTYPE_LOADER) {
|
||||||
alloc->data[i] = (uint32_t)backtrace_get_ip(task);
|
alloc->data[i] = (uint32_t)backtrace_get_ip(task);
|
||||||
|
|
||||||
|
if (!i || alloc->data[i - 1] != alloc->data[i]) {
|
||||||
if (!alloc->data[i])
|
if (!alloc->data[i])
|
||||||
break;
|
break;
|
||||||
|
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (backtrace_step(task) < 0)
|
if (backtrace_step(task) < 0)
|
||||||
break;
|
break;
|
||||||
|
|||||||
2
report.h
2
report.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
2
server.c
2
server.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
2
server.h
2
server.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# This file is part of mtrace.
|
# This file is part of mtrace-ng.
|
||||||
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
# This file is part of mtrace.
|
# This file is part of mtrace-ng.
|
||||||
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# This file is part of mtrace.
|
# This file is part of mtrace-ng.
|
||||||
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
# This file is part of mtrace.
|
# This file is part of mtrace-ng.
|
||||||
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# This file is part of mtrace.
|
# This file is part of mtrace-ng.
|
||||||
# Copyright (C) 2010 Marc Kleine-Budde, Pengutronix
|
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License as
|
# modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@ -14,8 +14,8 @@
|
|||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
# This file is part of mtrace.
|
# This file is part of mtrace-ng.
|
||||||
# Copyright (C) 2010 Marc Kleine-Budde, Pengutronix
|
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License as
|
# modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
@ -334,7 +334,7 @@ void change_uid(const char *command)
|
|||||||
run_gid = pent->pw_gid;
|
run_gid = pent->pw_gid;
|
||||||
|
|
||||||
if (initgroups(options.user, run_gid) < 0) {
|
if (initgroups(options.user, run_gid) < 0) {
|
||||||
perror("mtrace: initgroups");
|
perror("mtrace-ng: initgroups");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -355,11 +355,11 @@ void change_uid(const char *command)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (setregid(run_gid, run_egid) < 0) {
|
if (setregid(run_gid, run_egid) < 0) {
|
||||||
perror("mtrace: setregid");
|
perror("mtrace-ng: setregid");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (setreuid(run_uid, run_euid) < 0) {
|
if (setreuid(run_uid, run_euid) < 0) {
|
||||||
perror("mtrace: setreuid");
|
perror("mtrace-ng: setreuid");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# This file is part of mtrace.
|
# This file is part of mtrace-ng.
|
||||||
# Copyright (C) 2010 Marc Kleine-Budde, Pengutronix
|
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License as
|
# modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@ -14,8 +14,8 @@
|
|||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
# This file is part of mtrace.
|
# This file is part of mtrace-ng.
|
||||||
# Copyright (C) 2010 Marc Kleine-Budde, Pengutronix
|
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License as
|
# modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
@ -49,7 +49,7 @@
|
|||||||
#include "mtelf.h"
|
#include "mtelf.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
|
|
||||||
/* /proc/pid doesn't exist just after the fork, and sometimes `mtrace'
|
/* /proc/pid doesn't exist just after the fork, and sometimes `mtrace-ng'
|
||||||
* couldn't open it to find the executable. So it may be necessary to
|
* couldn't open it to find the executable. So it may be necessary to
|
||||||
* have a bit delay
|
* have a bit delay
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* phtread thread wrapper
|
* phtread thread wrapper
|
||||||
*
|
*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
@ -304,13 +304,13 @@ static void trace_fail_warning(void)
|
|||||||
#ifdef HAVE_LIBSELINUX
|
#ifdef HAVE_LIBSELINUX
|
||||||
if (security_get_boolean_active("deny_ptrace") == 1)
|
if (security_get_boolean_active("deny_ptrace") == 1)
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"The SELinux boolean 'deny_ptrace' is enabled, which may prevent mtrace\n"
|
"The SELinux boolean 'deny_ptrace' is enabled, which may prevent mtrace-ng\n"
|
||||||
"from tracing an other task. You can disable this process attach protection by\n"
|
"from tracing an other task. You can disable this process attach protection by\n"
|
||||||
"issuing 'setsebool deny_ptrace=0' in the superuser context.\n");
|
"issuing 'setsebool deny_ptrace=0' in the superuser context.\n");
|
||||||
#else
|
#else
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Could not trace! Maybe the SELinux boolean 'deny_ptrace' is enabled, which may\n"
|
"Could not trace! Maybe the SELinux boolean 'deny_ptrace' is enabled, which may\n"
|
||||||
"prevent mtrace from tracing an other tasks. Try to disable this process attach\n"
|
"prevent mtrace-ng from tracing an other tasks. Try to disable this process attach\n"
|
||||||
"protection by issuing 'setsebool deny_ptrace=0' in the superuser context.\n");
|
"protection by issuing 'setsebool deny_ptrace=0' in the superuser context.\n");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# This file is part of mtrace.
|
# This file is part of mtrace-ng.
|
||||||
# Copyright (C) 2010 Marc Kleine-Budde, Pengutronix
|
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License as
|
# modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@ -14,8 +14,8 @@
|
|||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
# This file is part of mtrace.
|
# This file is part of mtrace-ng.
|
||||||
# Copyright (C) 2010 Marc Kleine-Budde, Pengutronix
|
# Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License as
|
# modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
2
task.c
2
task.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
* This file is based on the ltrace source
|
* This file is based on the ltrace source
|
||||||
*
|
*
|
||||||
|
|||||||
4
task.h
4
task.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
@ -133,7 +133,7 @@ int task_fork(struct task *task, struct task *newtask);
|
|||||||
/* reset all breakpoints for task */
|
/* reset all breakpoints for task */
|
||||||
void task_reset_bp(struct task *task);
|
void task_reset_bp(struct task *task);
|
||||||
|
|
||||||
/* Iterate through the leader tasks that mtrace currently traces. */
|
/* Iterate through the leader tasks that mtrace-ng currently traces. */
|
||||||
void each_process(void (*cb)(struct task *task));
|
void each_process(void (*cb)(struct task *task));
|
||||||
|
|
||||||
/* Iterate through list of tasks of a given leader task asks */
|
/* Iterate through list of tasks of a given leader task asks */
|
||||||
|
|||||||
2
thread.h
2
thread.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
2
trace.c
2
trace.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
2
trace.h
2
trace.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of mtrace.
|
* This file is part of mtrace-ng.
|
||||||
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
* Copyright (C) 2015 Stefani Seibold <stefani@seibold.net>
|
||||||
*
|
*
|
||||||
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
* This work was sponsored by Rohde & Schwarz GmbH & Co. KG, Munich/Germany.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user