mirror of
https://github.com/ioacademy-jikim/debugging
synced 2026-08-30 09:19:28 +00:00
first commit
This commit is contained in:
@@ -0,0 +1 @@
|
||||
# dummy
|
||||
@@ -0,0 +1,49 @@
|
||||
exp_dhat_x86_linux-dh_main.o: dh_main.c /usr/include/stdc-predef.h \
|
||||
../include/pub_tool_basics.h ../VEX/pub/libvex_basictypes.h \
|
||||
/usr/lib/gcc/i686-linux-gnu/5/include/stdarg.h \
|
||||
../include/pub_tool_libcbase.h ../include/pub_tool_basics.h \
|
||||
../include/pub_tool_libcassert.h ../include/pub_tool_libcprint.h \
|
||||
../include/pub_tool_machine.h ../VEX/pub/libvex.h \
|
||||
../VEX/pub/libvex_basictypes.h ../VEX/pub/libvex_ir.h \
|
||||
../include/pub_tool_mallocfree.h ../include/pub_tool_options.h \
|
||||
../include/pub_tool_replacemalloc.h ../include/pub_tool_tooliface.h \
|
||||
../include/pub_tool_errormgr.h ../include/pub_tool_execontext.h \
|
||||
../include/pub_tool_wordfm.h
|
||||
|
||||
/usr/include/stdc-predef.h:
|
||||
|
||||
../include/pub_tool_basics.h:
|
||||
|
||||
../VEX/pub/libvex_basictypes.h:
|
||||
|
||||
/usr/lib/gcc/i686-linux-gnu/5/include/stdarg.h:
|
||||
|
||||
../include/pub_tool_libcbase.h:
|
||||
|
||||
../include/pub_tool_basics.h:
|
||||
|
||||
../include/pub_tool_libcassert.h:
|
||||
|
||||
../include/pub_tool_libcprint.h:
|
||||
|
||||
../include/pub_tool_machine.h:
|
||||
|
||||
../VEX/pub/libvex.h:
|
||||
|
||||
../VEX/pub/libvex_basictypes.h:
|
||||
|
||||
../VEX/pub/libvex_ir.h:
|
||||
|
||||
../include/pub_tool_mallocfree.h:
|
||||
|
||||
../include/pub_tool_options.h:
|
||||
|
||||
../include/pub_tool_replacemalloc.h:
|
||||
|
||||
../include/pub_tool_tooliface.h:
|
||||
|
||||
../include/pub_tool_errormgr.h:
|
||||
|
||||
../include/pub_tool_execontext.h:
|
||||
|
||||
../include/pub_tool_wordfm.h:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,100 @@
|
||||
include $(top_srcdir)/Makefile.tool.am
|
||||
|
||||
#SUBDIRS += perf
|
||||
|
||||
EXTRA_DIST = docs/dh-manual.xml
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Headers, etc
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
#bin_SCRIPTS = dh_print
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# exp_dhat-<platform>
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
noinst_PROGRAMS = exp-dhat-@VGCONF_ARCH_PRI@-@VGCONF_OS@
|
||||
if VGCONF_HAVE_PLATFORM_SEC
|
||||
noinst_PROGRAMS += exp-dhat-@VGCONF_ARCH_SEC@-@VGCONF_OS@
|
||||
endif
|
||||
|
||||
EXP_DHAT_SOURCES_COMMON = dh_main.c
|
||||
|
||||
exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \
|
||||
$(EXP_DHAT_SOURCES_COMMON)
|
||||
exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS = \
|
||||
$(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
|
||||
exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS = \
|
||||
$(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
|
||||
exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_DEPENDENCIES = \
|
||||
$(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_PRI_CAPS@)
|
||||
exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDADD = \
|
||||
$(TOOL_LDADD_@VGCONF_PLATFORM_PRI_CAPS@)
|
||||
exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \
|
||||
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
|
||||
exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \
|
||||
$(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
|
||||
@VALT_LOAD_ADDRESS_PRI@ \
|
||||
$(LINK) \
|
||||
$(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \
|
||||
$(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS)
|
||||
|
||||
if VGCONF_HAVE_PLATFORM_SEC
|
||||
exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES = \
|
||||
$(EXP_DHAT_SOURCES_COMMON)
|
||||
exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS = \
|
||||
$(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
|
||||
exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS = \
|
||||
$(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
|
||||
exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_DEPENDENCIES = \
|
||||
$(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_SEC_CAPS@)
|
||||
exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDADD = \
|
||||
$(TOOL_LDADD_@VGCONF_PLATFORM_SEC_CAPS@)
|
||||
exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \
|
||||
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
|
||||
exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \
|
||||
$(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
|
||||
@VALT_LOAD_ADDRESS_SEC@ \
|
||||
$(LINK) \
|
||||
$(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \
|
||||
$(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS)
|
||||
endif
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# vgpreload_exp_dhat-<platform>.so
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
noinst_PROGRAMS += vgpreload_exp-dhat-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so
|
||||
if VGCONF_HAVE_PLATFORM_SEC
|
||||
noinst_PROGRAMS += vgpreload_exp-dhat-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so
|
||||
endif
|
||||
|
||||
if VGCONF_OS_IS_DARWIN
|
||||
noinst_DSYMS = $(noinst_PROGRAMS)
|
||||
endif
|
||||
|
||||
vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES =
|
||||
vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS = \
|
||||
$(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
|
||||
vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS = \
|
||||
$(AM_CFLAGS_PSO_@VGCONF_PLATFORM_PRI_CAPS@)
|
||||
vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_DEPENDENCIES = \
|
||||
$(LIBREPLACEMALLOC_@VGCONF_PLATFORM_PRI_CAPS@)
|
||||
vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDFLAGS = \
|
||||
$(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \
|
||||
$(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
|
||||
|
||||
if VGCONF_HAVE_PLATFORM_SEC
|
||||
vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES =
|
||||
vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS = \
|
||||
$(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
|
||||
vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS = \
|
||||
$(AM_CFLAGS_PSO_@VGCONF_PLATFORM_SEC_CAPS@)
|
||||
vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_DEPENDENCIES = \
|
||||
$(LIBREPLACEMALLOC_@VGCONF_PLATFORM_SEC_CAPS@)
|
||||
vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDFLAGS = \
|
||||
$(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) \
|
||||
$(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
|
||||
endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,400 @@
|
||||
<?xml version="1.0"?> <!-- -*- sgml -*- -->
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
|
||||
[ <!ENTITY % vg-entities SYSTEM "../../docs/xml/vg-entities.xml"> %vg-entities; ]>
|
||||
|
||||
|
||||
<chapter id="dh-manual"
|
||||
xreflabel="DHAT: a dynamic heap analysis tool">
|
||||
<title>DHAT: a dynamic heap analysis tool</title>
|
||||
|
||||
<para>To use this tool, you must specify
|
||||
<option>--tool=exp-dhat</option> on the Valgrind
|
||||
command line.</para>
|
||||
|
||||
|
||||
|
||||
<sect1 id="dh-manual.overview" xreflabel="Overview">
|
||||
<title>Overview</title>
|
||||
|
||||
<para>DHAT is a tool for examining how programs use their heap
|
||||
allocations.</para>
|
||||
|
||||
<para>It tracks the allocated blocks, and inspects every memory access
|
||||
to find which block, if any, it is to. The following data is
|
||||
collected and presented per allocation point (allocation
|
||||
stack):</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>Total allocation (number of bytes and
|
||||
blocks)</para></listitem>
|
||||
|
||||
<listitem><para>maximum live volume (number of bytes and
|
||||
blocks)</para></listitem>
|
||||
|
||||
<listitem><para>average block lifetime (number of instructions
|
||||
between allocation and freeing)</para></listitem>
|
||||
|
||||
<listitem><para>average number of reads and writes to each byte in
|
||||
the block ("access ratios")</para></listitem>
|
||||
|
||||
<listitem><para>for allocation points which always allocate blocks
|
||||
only of one size, and that size is 4096 bytes or less: counts
|
||||
showing how often each byte offset inside the block is
|
||||
accessed.</para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>Using these statistics it is possible to identify allocation
|
||||
points with the following characteristics:</para>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>potential process-lifetime leaks: blocks allocated
|
||||
by the point just accumulate, and are freed only at the end of the
|
||||
run.</para></listitem>
|
||||
|
||||
<listitem><para>excessive turnover: points which chew through a lot
|
||||
of heap, even if it is not held onto for very long</para></listitem>
|
||||
|
||||
<listitem><para>excessively transient: points which allocate very
|
||||
short lived blocks</para></listitem>
|
||||
|
||||
<listitem><para>useless or underused allocations: blocks which are
|
||||
allocated but not completely filled in, or are filled in but not
|
||||
subsequently read.</para></listitem>
|
||||
|
||||
<listitem><para>blocks with inefficient layout -- areas never
|
||||
accessed, or with hot fields scattered throughout the
|
||||
block.</para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>As with the Massif heap profiler, DHAT measures program progress
|
||||
by counting instructions, and so presents all age/time related figures
|
||||
as instruction counts. This sounds a little odd at first, but it
|
||||
makes runs repeatable in a way which is not possible if CPU time is
|
||||
used.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
||||
|
||||
|
||||
<sect1 id="dh-manual.understanding" xreflabel="Understanding DHAT's output">
|
||||
<title>Understanding DHAT's output</title>
|
||||
|
||||
|
||||
<para>DHAT provides a lot of useful information on dynamic heap usage.
|
||||
Most of the art of using it is in interpretation of the resulting
|
||||
numbers. That is best illustrated via a set of examples.</para>
|
||||
|
||||
|
||||
<sect2>
|
||||
<title>Interpreting the max-live, tot-alloc and deaths fields</title>
|
||||
|
||||
<sect3><title>A simple example</title></sect3>
|
||||
|
||||
<screen><![CDATA[
|
||||
======== SUMMARY STATISTICS ========
|
||||
|
||||
guest_insns: 1,045,339,534
|
||||
[...]
|
||||
max-live: 63,490 in 984 blocks
|
||||
tot-alloc: 1,904,700 in 29,520 blocks (avg size 64.52)
|
||||
deaths: 29,520, at avg age 22,227,424
|
||||
acc-ratios: 6.37 rd, 1.14 wr (12,141,526 b-read, 2,174,460 b-written)
|
||||
at 0x4C275B8: malloc (vg_replace_malloc.c:236)
|
||||
by 0x40350E: tcc_malloc (tinycc.c:6712)
|
||||
by 0x404580: tok_alloc_new (tinycc.c:7151)
|
||||
by 0x40870A: next_nomacro1 (tinycc.c:9305)
|
||||
]]></screen>
|
||||
|
||||
<para>Over the entire run of the program, this stack (allocation
|
||||
point) allocated 29,520 blocks in total, containing 1,904,700 bytes in
|
||||
total. By looking at the max-live data, we see that not many blocks
|
||||
were simultaneously live, though: at the peak, there were 63,490
|
||||
allocated bytes in 984 blocks. This tells us that the program is
|
||||
steadily freeing such blocks as it runs, rather than hanging on to all
|
||||
of them until the end and freeing them all.</para>
|
||||
|
||||
<para>The deaths entry tells us that 29,520 blocks allocated by this stack
|
||||
died (were freed) during the run of the program. Since 29,520 is
|
||||
also the number of blocks allocated in total, that tells us that
|
||||
all allocated blocks were freed by the end of the program.</para>
|
||||
|
||||
<para>It also tells us that the average age at death was 22,227,424
|
||||
instructions. From the summary statistics we see that the program ran
|
||||
for 1,045,339,534 instructions, and so the average age at death is
|
||||
about 2% of the program's total run time.</para>
|
||||
|
||||
<sect3><title>Example of a potential process-lifetime leak</title></sect3>
|
||||
|
||||
<para>This next example (from a different program than the above)
|
||||
shows a potential process lifetime leak. A process lifetime leak
|
||||
occurs when a program keeps allocating data, but only frees the
|
||||
data just before it exits. Hence the program's heap grows constantly
|
||||
in size, yet Memcheck reports no leak, because the program has
|
||||
freed up everything at exit. This is particularly a hazard for
|
||||
long running programs.</para>
|
||||
|
||||
<screen><![CDATA[
|
||||
======== SUMMARY STATISTICS ========
|
||||
|
||||
guest_insns: 418,901,537
|
||||
[...]
|
||||
max-live: 32,512 in 254 blocks
|
||||
tot-alloc: 32,512 in 254 blocks (avg size 128.00)
|
||||
deaths: 254, at avg age 300,467,389
|
||||
acc-ratios: 0.26 rd, 0.20 wr (8,756 b-read, 6,604 b-written)
|
||||
at 0x4C275B8: malloc (vg_replace_malloc.c:236)
|
||||
by 0x4C27632: realloc (vg_replace_malloc.c:525)
|
||||
by 0x56FF41D: QtFontStyle::pixelSize(unsigned short, bool) (qfontdatabase.cpp:269)
|
||||
by 0x5700D69: loadFontConfig() (qfontdatabase_x11.cpp:1146)
|
||||
]]></screen>
|
||||
|
||||
<para>There are two tell-tale signs that this might be a
|
||||
process-lifetime leak. Firstly, the max-live and tot-alloc numbers
|
||||
are identical. The only way that can happen is if these blocks are
|
||||
all allocated and then all deallocated.</para>
|
||||
|
||||
<para>Secondly, the average age at death (300 million insns) is 71% of
|
||||
the total program lifetime (419 million insns), hence this is not a
|
||||
transient allocation-free spike -- rather, it is spread out over a
|
||||
large part of the entire run. One interpretation is, roughly, that
|
||||
all 254 blocks were allocated in the first half of the run, held onto
|
||||
for the second half, and then freed just before exit.</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
|
||||
<sect2>
|
||||
<title>Interpreting the acc-ratios fields</title>
|
||||
|
||||
|
||||
<sect3><title>A fairly harmless allocation point record</title></sect3>
|
||||
|
||||
<screen><![CDATA[
|
||||
max-live: 49,398 in 808 blocks
|
||||
tot-alloc: 1,481,940 in 24,240 blocks (avg size 61.13)
|
||||
deaths: 24,240, at avg age 34,611,026
|
||||
acc-ratios: 2.13 rd, 0.91 wr (3,166,650 b-read, 1,358,820 b-written)
|
||||
at 0x4C275B8: malloc (vg_replace_malloc.c:236)
|
||||
by 0x40350E: tcc_malloc (tinycc.c:6712)
|
||||
by 0x404580: tok_alloc_new (tinycc.c:7151)
|
||||
by 0x4046C4: tok_alloc (tinycc.c:7190)
|
||||
]]></screen>
|
||||
|
||||
<para>The acc-ratios field tells us that each byte in the blocks
|
||||
allocated here is read an average of 2.13 times before the block is
|
||||
deallocated. Given that the blocks have an average age at death of
|
||||
34,611,026, that's one read per block per approximately every 15
|
||||
million instructions. So from that standpoint the blocks aren't
|
||||
"working" very hard.</para>
|
||||
|
||||
<para>More interesting is the write ratio: each byte is written an
|
||||
average of 0.91 times. This tells us that some parts of the allocated
|
||||
blocks are never written, at least 9% on average. To completely
|
||||
initialise the block would require writing each byte at least once,
|
||||
and that would give a write ratio of 1.0. The fact that some block
|
||||
areas are evidently unused might point to data alignment holes or
|
||||
other layout inefficiencies.</para>
|
||||
|
||||
<para>Well, at least all the blocks are freed (24,240 allocations,
|
||||
24,240 deaths).</para>
|
||||
|
||||
<para>If all the blocks had been the same size, DHAT would also show
|
||||
the access counts by block offset, so we could see where exactly these
|
||||
unused areas are. However, that isn't the case: the blocks have
|
||||
varying sizes, so DHAT can't perform such an analysis. We can see
|
||||
that they must have varying sizes since the average block size, 61.13,
|
||||
isn't a whole number.</para>
|
||||
|
||||
|
||||
<sect3><title>A more suspicious looking example</title></sect3>
|
||||
|
||||
<screen><![CDATA[
|
||||
max-live: 180,224 in 22 blocks
|
||||
tot-alloc: 180,224 in 22 blocks (avg size 8192.00)
|
||||
deaths: none (none of these blocks were freed)
|
||||
acc-ratios: 0.00 rd, 0.00 wr (0 b-read, 0 b-written)
|
||||
at 0x4C275B8: malloc (vg_replace_malloc.c:236)
|
||||
by 0x40350E: tcc_malloc (tinycc.c:6712)
|
||||
by 0x40369C: __sym_malloc (tinycc.c:6787)
|
||||
by 0x403711: sym_malloc (tinycc.c:6805)
|
||||
]]></screen>
|
||||
|
||||
<para>Here, both the read and write access ratios are zero. Hence
|
||||
this point is allocating blocks which are never used, neither read nor
|
||||
written. Indeed, they are also not freed ("deaths: none") and are
|
||||
simply leaked. So, here is 180k of completely useless allocation that
|
||||
could be removed.</para>
|
||||
|
||||
<para>Re-running with Memcheck does indeed report the same leak. What
|
||||
DHAT can tell us, that Memcheck can't, is that not only are the blocks
|
||||
leaked, they are also never used.</para>
|
||||
|
||||
<sect3><title>Another suspicious example</title></sect3>
|
||||
|
||||
<para>Here's one where blocks are allocated, written to,
|
||||
but never read from. We see this immediately from the zero read
|
||||
access ratio. They do get freed, though:</para>
|
||||
|
||||
<screen><![CDATA[
|
||||
max-live: 54 in 3 blocks
|
||||
tot-alloc: 1,620 in 90 blocks (avg size 18.00)
|
||||
deaths: 90, at avg age 34,558,236
|
||||
acc-ratios: 0.00 rd, 1.11 wr (0 b-read, 1,800 b-written)
|
||||
at 0x4C275B8: malloc (vg_replace_malloc.c:236)
|
||||
by 0x40350E: tcc_malloc (tinycc.c:6712)
|
||||
by 0x4035BD: tcc_strdup (tinycc.c:6750)
|
||||
by 0x41FEBB: tcc_add_sysinclude_path (tinycc.c:20931)
|
||||
]]></screen>
|
||||
|
||||
<para>In the previous two examples, it is easy to see blocks that are
|
||||
never written to, or never read from, or some combination of both.
|
||||
Unfortunately, in C++ code, the situation is less clear. That's
|
||||
because an object's constructor will write to the underlying block,
|
||||
and its destructor will read from it. So the block's read and write
|
||||
ratios will be non-zero even if the object, once constructed, is never
|
||||
used, but only eventually destructed.</para>
|
||||
|
||||
<para>Really, what we want is to measure only memory accesses in
|
||||
between the end of an object's construction and the start of its
|
||||
destruction. Unfortunately I do not know of a reliable way to
|
||||
determine when those transitions are made.</para>
|
||||
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Interpreting "Aggregated access counts by offset" data</title>
|
||||
|
||||
<para>For allocation points that always allocate blocks of the same
|
||||
size, and which are 4096 bytes or smaller, DHAT counts accesses
|
||||
per offset, for example:</para>
|
||||
|
||||
<screen><![CDATA[
|
||||
max-live: 317,408 in 5,668 blocks
|
||||
tot-alloc: 317,408 in 5,668 blocks (avg size 56.00)
|
||||
deaths: 5,668, at avg age 622,890,597
|
||||
acc-ratios: 1.03 rd, 1.28 wr (327,642 b-read, 408,172 b-written)
|
||||
at 0x4C275B8: malloc (vg_replace_malloc.c:236)
|
||||
by 0x5440C16: QDesignerPropertySheetPrivate::ensureInfo (qhash.h:515)
|
||||
by 0x544350B: QDesignerPropertySheet::setVisible (qdesigner_propertysh...)
|
||||
by 0x5446232: QDesignerPropertySheet::QDesignerPropertySheet (qdesigne...)
|
||||
|
||||
Aggregated access counts by offset:
|
||||
|
||||
[ 0] 28782 28782 28782 28782 28782 28782 28782 28782
|
||||
[ 8] 20638 20638 20638 20638 0 0 0 0
|
||||
[ 16] 22738 22738 22738 22738 22738 22738 22738 22738
|
||||
[ 24] 6013 6013 6013 6013 6013 6013 6013 6013
|
||||
[ 32] 18883 18883 18883 37422 0 0 0 0
|
||||
[ 36] 5668 11915 5668 5668 11336 11336 11336 11336
|
||||
[ 48] 6166 6166 6166 6166 0 0 0 0
|
||||
]]></screen>
|
||||
|
||||
<para>This is fairly typical, for C++ code running on a 64-bit
|
||||
platform. Here, we have aggregated access statistics for 5668 blocks,
|
||||
all of size 56 bytes. Each byte has been accessed at least 5668
|
||||
times, except for offsets 12--15, 36--39 and 52--55. These are likely
|
||||
to be alignment holes.</para>
|
||||
|
||||
<para>Careful interpretation of the numbers reveals useful information.
|
||||
Groups of N consecutive identical numbers that begin at an N-aligned
|
||||
offset, for N being 2, 4 or 8, are likely to indicate an N-byte object
|
||||
in the structure at that point. For example, the first 32 bytes of
|
||||
this object are likely to have the layout</para>
|
||||
|
||||
<screen><![CDATA[
|
||||
[0 ] 64-bit type
|
||||
[8 ] 32-bit type
|
||||
[12] 32-bit alignment hole
|
||||
[16] 64-bit type
|
||||
[24] 64-bit type
|
||||
]]></screen>
|
||||
|
||||
<para>As a counterexample, it's also clear that, whatever is at offset 32,
|
||||
it is not a 32-bit value. That's because the last number of the group
|
||||
(37422) is not the same as the first three (18883 18883 18883).</para>
|
||||
|
||||
<para>This example leads one to enquire (by reading the source code)
|
||||
whether the zeroes at 12--15 and 52--55 are alignment holes, and
|
||||
whether 48--51 is indeed a 32-bit type. If so, it might be possible
|
||||
to place what's at 48--51 at 12--15 instead, which would reduce
|
||||
the object size from 56 to 48 bytes.</para>
|
||||
|
||||
<para>Bear in mind that the above inferences are all only "maybes". That's
|
||||
because they are based on dynamic data, not static analysis of the
|
||||
object layout. For example, the zeroes might not be alignment
|
||||
holes, but rather just parts of the structure which were not used
|
||||
at all for this particular run. Experience shows that's unlikely
|
||||
to be the case, but it could happen.</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<sect1 id="dh-manual.options" xreflabel="DHAT Command-line Options">
|
||||
<title>DHAT Command-line Options</title>
|
||||
|
||||
<para>DHAT-specific command-line options are:</para>
|
||||
|
||||
<!-- start of xi:include in the manpage -->
|
||||
<variablelist id="dh.opts.list">
|
||||
|
||||
<varlistentry id="opt.show-top-n" xreflabel="--show-top-n">
|
||||
<term>
|
||||
<option><![CDATA[--show-top-n=<number>
|
||||
[default: 10] ]]></option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>At the end of the run, DHAT sorts the accumulated
|
||||
allocation points according to some metric, and shows the
|
||||
highest scoring entries. <varname>--show-top-n</varname>
|
||||
controls how many entries are shown. The default of 10 is
|
||||
quite small. For realistic applications you will probably need
|
||||
to set it much higher, at least several hundred.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="opt.sort-by" xreflabel="--sort-by=string">
|
||||
<term>
|
||||
<option><![CDATA[--sort-by=<string> [default: max-bytes-live] ]]></option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>At the end of the run, DHAT sorts the accumulated
|
||||
allocation points according to some metric, and shows the
|
||||
highest scoring entries. <varname>--sort-by</varname>
|
||||
selects the metric used for sorting:</para>
|
||||
<para><varname>max-bytes-live </varname> maximum live bytes [default]</para>
|
||||
<para><varname>tot-bytes-allocd </varname> total allocation (turnover)</para>
|
||||
<para><varname>max-blocks-live </varname> maximum live blocks</para>
|
||||
<para>This controls the order in which allocation points are
|
||||
displayed. You can choose to look at allocation points with
|
||||
the highest maximum liveness, or the highest total turnover, or
|
||||
by the highest number of live blocks. These give usefully
|
||||
different pictures of program behaviour. For example, sorting
|
||||
by maximum live blocks tends to show up allocation points
|
||||
creating large numbers of small objects.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
<para>One important point to note is that each allocation stack counts
|
||||
as a seperate allocation point. Because stacks by default have 12
|
||||
frames, this tends to spread data out over multiple allocation points.
|
||||
You may want to use the flag --num-callers=4 or some such small
|
||||
number, to reduce the spreading.</para>
|
||||
|
||||
<!-- end of xi:include in the manpage -->
|
||||
|
||||
</sect1>
|
||||
|
||||
</chapter>
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,468 @@
|
||||
# Makefile.in generated by automake 1.14.1 from Makefile.am.
|
||||
# exp-dhat/tests/Makefile. Generated from Makefile.in by configure.
|
||||
|
||||
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/valgrind
|
||||
pkgincludedir = $(includedir)/valgrind
|
||||
pkglibdir = $(libdir)/valgrind
|
||||
pkglibexecdir = $(libexecdir)/valgrind
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = i686-pc-linux-gnu
|
||||
host_triplet = i686-pc-linux-gnu
|
||||
subdir = exp-dhat/tests
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_$(V))
|
||||
am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = ${SHELL} /root/03_day/valgrind-3.11.0/missing aclocal-1.14
|
||||
AMTAR = $${TAR-tar}
|
||||
AM_DEFAULT_VERBOSITY = 1
|
||||
AR = /usr/bin/ar
|
||||
AUTOCONF = ${SHELL} /root/03_day/valgrind-3.11.0/missing autoconf
|
||||
AUTOHEADER = ${SHELL} /root/03_day/valgrind-3.11.0/missing autoheader
|
||||
AUTOMAKE = ${SHELL} /root/03_day/valgrind-3.11.0/missing automake-1.14
|
||||
AWK = gawk
|
||||
BOOST_CFLAGS =
|
||||
BOOST_LIBS =
|
||||
CC = gcc
|
||||
CCAS = gcc
|
||||
CCASDEPMODE = depmode=gcc3
|
||||
CCASFLAGS =
|
||||
CCDEPMODE = depmode=gcc3
|
||||
CFLAGS =
|
||||
CFLAGS_MPI = -g -O -fno-omit-frame-pointer -Wall -fpic
|
||||
CPP = gcc -E
|
||||
CPPFLAGS =
|
||||
CXX = g++
|
||||
CXXDEPMODE = depmode=gcc3
|
||||
CXXFLAGS =
|
||||
CYGPATH_W = echo
|
||||
DEFAULT_SUPP = exp-sgcheck.supp xfree-3.supp xfree-4.supp glibc-2.X-drd.supp glibc-2.34567-NPTL-helgrind.supp glibc-2.X.supp
|
||||
DEFS = -DHAVE_CONFIG_H
|
||||
DEPDIR = .deps
|
||||
DIFF = diff -u
|
||||
DIS_PATH =
|
||||
ECHO_C =
|
||||
ECHO_N = -n
|
||||
ECHO_T =
|
||||
EGREP = /bin/grep -E
|
||||
EXEEXT =
|
||||
FLAG_FNO_IPA_ICF = -fno-ipa-icf
|
||||
FLAG_FNO_STACK_PROTECTOR = -fno-stack-protector
|
||||
FLAG_FSANITIZE =
|
||||
FLAG_M32 = -m32
|
||||
FLAG_M64 = -m64
|
||||
FLAG_MIPS32 =
|
||||
FLAG_MIPS64 =
|
||||
FLAG_MLONG_DOUBLE_128 = -mlong-double-128
|
||||
FLAG_MMMX = -mmmx
|
||||
FLAG_MSSE = -msse
|
||||
FLAG_NO_BUILD_ID =
|
||||
FLAG_OCTEON =
|
||||
FLAG_OCTEON2 =
|
||||
FLAG_T_TEXT = -Ttext-segment
|
||||
FLAG_UNLIMITED_INLINE_UNIT_GROWTH = --param inline-unit-growth=900
|
||||
FLAG_W_CAST_ALIGN = -Wcast-align
|
||||
FLAG_W_CAST_QUAL = -Wcast-qual
|
||||
FLAG_W_EMPTY_BODY = -Wempty-body
|
||||
FLAG_W_EXTRA = -Wextra
|
||||
FLAG_W_FORMAT = -Wformat
|
||||
FLAG_W_FORMAT_SECURITY = -Wformat-security
|
||||
FLAG_W_FORMAT_SIGNEDNESS =
|
||||
FLAG_W_IGNORED_QUALIFIERS = -Wignored-qualifiers
|
||||
FLAG_W_MISSING_PARAMETER_TYPE = -Wmissing-parameter-type
|
||||
FLAG_W_NO_INFINITE_RECURSION =
|
||||
FLAG_W_NO_MEMSET_TRANSPOSED_ARGS = -Wno-memset-transposed-args
|
||||
FLAG_W_NO_MISMATCHED_NEW_DELETE =
|
||||
FLAG_W_NO_NONNULL = -Wno-nonnull
|
||||
FLAG_W_NO_OVERFLOW = -Wno-overflow
|
||||
FLAG_W_NO_POINTER_SIGN = -Wno-pointer-sign
|
||||
FLAG_W_NO_STATIC_LOCAL_IN_INLINE =
|
||||
FLAG_W_NO_UNINITIALIZED = -Wno-uninitialized
|
||||
FLAG_W_NO_UNUSED_FUNCTION = -Wno-unused-function
|
||||
FLAG_W_OLD_STYLE_DECLARATION = -Wold-style-declaration
|
||||
FLAG_W_WRITE_STRINGS = -Wwrite-strings
|
||||
GDB = /usr/bin/gdb
|
||||
GLIBC_VERSION = 2.21
|
||||
GREP = /bin/grep
|
||||
HWCAP_HAS_ALTIVEC =
|
||||
HWCAP_HAS_DFP =
|
||||
HWCAP_HAS_HTM =
|
||||
HWCAP_HAS_ISA_2_05 =
|
||||
HWCAP_HAS_ISA_2_06 =
|
||||
HWCAP_HAS_ISA_2_07 =
|
||||
HWCAP_HAS_VSX =
|
||||
INSTALL = /usr/bin/install -c
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_SCRIPT = ${INSTALL}
|
||||
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
|
||||
LDFLAGS =
|
||||
LDFLAGS_MPI = -fpic -shared
|
||||
LIBOBJS =
|
||||
LIBS =
|
||||
LIB_UBSAN =
|
||||
LN_S = ln -s
|
||||
LTLIBOBJS =
|
||||
MAINT = #
|
||||
MAKEINFO = ${SHELL} /root/03_day/valgrind-3.11.0/missing makeinfo
|
||||
MKDIR_P = /bin/mkdir -p
|
||||
MPI_CC = mpicc
|
||||
OBJEXT = o
|
||||
PACKAGE = valgrind
|
||||
PACKAGE_BUGREPORT = valgrind-users@lists.sourceforge.net
|
||||
PACKAGE_NAME = Valgrind
|
||||
PACKAGE_STRING = Valgrind 3.11.0
|
||||
PACKAGE_TARNAME = valgrind
|
||||
PACKAGE_URL =
|
||||
PACKAGE_VERSION = 3.11.0
|
||||
PATH_SEPARATOR = :
|
||||
PERL = /usr/bin/perl
|
||||
PREFERRED_STACK_BOUNDARY_2 = -mpreferred-stack-boundary=2
|
||||
RANLIB = ranlib
|
||||
SED = /bin/sed
|
||||
SET_MAKE =
|
||||
SHELL = /bin/bash
|
||||
STRIP =
|
||||
VALT_LOAD_ADDRESS_PRI = 0x38000000
|
||||
VALT_LOAD_ADDRESS_SEC = 0xUNSET
|
||||
VERSION = 3.11.0
|
||||
VGCONF_ARCH_PRI = x86
|
||||
VGCONF_ARCH_SEC =
|
||||
VGCONF_OS = linux
|
||||
VGCONF_PLATFORM_PRI_CAPS = X86_LINUX
|
||||
VGCONF_PLATFORM_SEC_CAPS =
|
||||
VGCONF_PLATVARIANT = vanilla
|
||||
VG_TMPDIR = /tmp
|
||||
abs_builddir = /root/03_day/valgrind-3.11.0/exp-dhat/tests
|
||||
abs_srcdir = /root/03_day/valgrind-3.11.0/exp-dhat/tests
|
||||
abs_top_builddir = /root/03_day/valgrind-3.11.0
|
||||
abs_top_srcdir = /root/03_day/valgrind-3.11.0
|
||||
ac_ct_CC = gcc
|
||||
ac_ct_CXX = g++
|
||||
am__include = include
|
||||
am__leading_dot = .
|
||||
am__quote =
|
||||
am__tar = $${TAR-tar} chof - "$$tardir"
|
||||
am__untar = $${TAR-tar} xf -
|
||||
bindir = ${exec_prefix}/bin
|
||||
build = i686-pc-linux-gnu
|
||||
build_alias =
|
||||
build_cpu = i686
|
||||
build_os = linux-gnu
|
||||
build_vendor = pc
|
||||
builddir = .
|
||||
datadir = ${datarootdir}
|
||||
datarootdir = ${prefix}/share
|
||||
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
|
||||
dvidir = ${docdir}
|
||||
exec_prefix = ${prefix}
|
||||
host = i686-pc-linux-gnu
|
||||
host_alias =
|
||||
host_cpu = i686
|
||||
host_os = linux-gnu
|
||||
host_vendor = pc
|
||||
htmldir = ${docdir}
|
||||
includedir = ${prefix}/include
|
||||
infodir = ${datarootdir}/info
|
||||
install_sh = ${SHELL} /root/03_day/valgrind-3.11.0/install-sh
|
||||
libdir = ${exec_prefix}/lib
|
||||
libexecdir = ${exec_prefix}/libexec
|
||||
localedir = ${datarootdir}/locale
|
||||
localstatedir = ${prefix}/var
|
||||
mandir = ${datarootdir}/man
|
||||
mkdir_p = $(MKDIR_P)
|
||||
oldincludedir = /usr/include
|
||||
pdfdir = ${docdir}
|
||||
prefix = /usr/local
|
||||
program_transform_name = s,x,x,
|
||||
psdir = ${docdir}
|
||||
sbindir = ${exec_prefix}/sbin
|
||||
sharedstatedir = ${prefix}/com
|
||||
srcdir = .
|
||||
sysconfdir = ${prefix}/etc
|
||||
target_alias =
|
||||
top_build_prefix = ../../
|
||||
top_builddir = ../..
|
||||
top_srcdir = ../..
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign exp-dhat/tests/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign exp-dhat/tests/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: # $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
|
||||
ctags-am distclean distclean-generic distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
|
||||
pdf-am ps ps-am tags-am uninstall uninstall-am
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,468 @@
|
||||
# Makefile.in generated by automake 1.14.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = exp-dhat/tests
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BOOST_CFLAGS = @BOOST_CFLAGS@
|
||||
BOOST_LIBS = @BOOST_LIBS@
|
||||
CC = @CC@
|
||||
CCAS = @CCAS@
|
||||
CCASDEPMODE = @CCASDEPMODE@
|
||||
CCASFLAGS = @CCASFLAGS@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAGS_MPI = @CFLAGS_MPI@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFAULT_SUPP = @DEFAULT_SUPP@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DIFF = @DIFF@
|
||||
DIS_PATH = @DIS_PATH@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@
|
||||
FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@
|
||||
FLAG_FSANITIZE = @FLAG_FSANITIZE@
|
||||
FLAG_M32 = @FLAG_M32@
|
||||
FLAG_M64 = @FLAG_M64@
|
||||
FLAG_MIPS32 = @FLAG_MIPS32@
|
||||
FLAG_MIPS64 = @FLAG_MIPS64@
|
||||
FLAG_MLONG_DOUBLE_128 = @FLAG_MLONG_DOUBLE_128@
|
||||
FLAG_MMMX = @FLAG_MMMX@
|
||||
FLAG_MSSE = @FLAG_MSSE@
|
||||
FLAG_NO_BUILD_ID = @FLAG_NO_BUILD_ID@
|
||||
FLAG_OCTEON = @FLAG_OCTEON@
|
||||
FLAG_OCTEON2 = @FLAG_OCTEON2@
|
||||
FLAG_T_TEXT = @FLAG_T_TEXT@
|
||||
FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@
|
||||
FLAG_W_CAST_ALIGN = @FLAG_W_CAST_ALIGN@
|
||||
FLAG_W_CAST_QUAL = @FLAG_W_CAST_QUAL@
|
||||
FLAG_W_EMPTY_BODY = @FLAG_W_EMPTY_BODY@
|
||||
FLAG_W_EXTRA = @FLAG_W_EXTRA@
|
||||
FLAG_W_FORMAT = @FLAG_W_FORMAT@
|
||||
FLAG_W_FORMAT_SECURITY = @FLAG_W_FORMAT_SECURITY@
|
||||
FLAG_W_FORMAT_SIGNEDNESS = @FLAG_W_FORMAT_SIGNEDNESS@
|
||||
FLAG_W_IGNORED_QUALIFIERS = @FLAG_W_IGNORED_QUALIFIERS@
|
||||
FLAG_W_MISSING_PARAMETER_TYPE = @FLAG_W_MISSING_PARAMETER_TYPE@
|
||||
FLAG_W_NO_INFINITE_RECURSION = @FLAG_W_NO_INFINITE_RECURSION@
|
||||
FLAG_W_NO_MEMSET_TRANSPOSED_ARGS = @FLAG_W_NO_MEMSET_TRANSPOSED_ARGS@
|
||||
FLAG_W_NO_MISMATCHED_NEW_DELETE = @FLAG_W_NO_MISMATCHED_NEW_DELETE@
|
||||
FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@
|
||||
FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@
|
||||
FLAG_W_NO_POINTER_SIGN = @FLAG_W_NO_POINTER_SIGN@
|
||||
FLAG_W_NO_STATIC_LOCAL_IN_INLINE = @FLAG_W_NO_STATIC_LOCAL_IN_INLINE@
|
||||
FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@
|
||||
FLAG_W_NO_UNUSED_FUNCTION = @FLAG_W_NO_UNUSED_FUNCTION@
|
||||
FLAG_W_OLD_STYLE_DECLARATION = @FLAG_W_OLD_STYLE_DECLARATION@
|
||||
FLAG_W_WRITE_STRINGS = @FLAG_W_WRITE_STRINGS@
|
||||
GDB = @GDB@
|
||||
GLIBC_VERSION = @GLIBC_VERSION@
|
||||
GREP = @GREP@
|
||||
HWCAP_HAS_ALTIVEC = @HWCAP_HAS_ALTIVEC@
|
||||
HWCAP_HAS_DFP = @HWCAP_HAS_DFP@
|
||||
HWCAP_HAS_HTM = @HWCAP_HAS_HTM@
|
||||
HWCAP_HAS_ISA_2_05 = @HWCAP_HAS_ISA_2_05@
|
||||
HWCAP_HAS_ISA_2_06 = @HWCAP_HAS_ISA_2_06@
|
||||
HWCAP_HAS_ISA_2_07 = @HWCAP_HAS_ISA_2_07@
|
||||
HWCAP_HAS_VSX = @HWCAP_HAS_VSX@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LDFLAGS_MPI = @LDFLAGS_MPI@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIB_UBSAN = @LIB_UBSAN@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
MPI_CC = @MPI_CC@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PREFERRED_STACK_BOUNDARY_2 = @PREFERRED_STACK_BOUNDARY_2@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VALT_LOAD_ADDRESS_PRI = @VALT_LOAD_ADDRESS_PRI@
|
||||
VALT_LOAD_ADDRESS_SEC = @VALT_LOAD_ADDRESS_SEC@
|
||||
VERSION = @VERSION@
|
||||
VGCONF_ARCH_PRI = @VGCONF_ARCH_PRI@
|
||||
VGCONF_ARCH_SEC = @VGCONF_ARCH_SEC@
|
||||
VGCONF_OS = @VGCONF_OS@
|
||||
VGCONF_PLATFORM_PRI_CAPS = @VGCONF_PLATFORM_PRI_CAPS@
|
||||
VGCONF_PLATFORM_SEC_CAPS = @VGCONF_PLATFORM_SEC_CAPS@
|
||||
VGCONF_PLATVARIANT = @VGCONF_PLATVARIANT@
|
||||
VG_TMPDIR = @VG_TMPDIR@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign exp-dhat/tests/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign exp-dhat/tests/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
|
||||
ctags-am distclean distclean-generic distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
|
||||
pdf-am ps ps-am tags-am uninstall uninstall-am
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
Binary file not shown.
Reference in New Issue
Block a user