summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2010-12-02 09:51:41 -0500
committerEric S. Raymond <esr@thyrsus.com>2010-12-02 09:51:41 -0500
commit81f14d2e9469a0e832c84e1f28de270a5b7b0c44 (patch)
treee33eb68c8000cecd7df86049848eb4f84e5fa114
parent914cb86f8b67b8d5a9703faf6f9eb9c2ce42a095 (diff)
downloaddeheader-81f14d2e9469a0e832c84e1f28de270a5b7b0c44.tar.gz
deheader-81f14d2e9469a0e832c84e1f28de270a5b7b0c44.tar.bz2
deheader-81f14d2e9469a0e832c84e1f28de270a5b7b0c44.tar.xz
deheader-81f14d2e9469a0e832c84e1f28de270a5b7b0c44.zip
Document limitations.
-rw-r--r--deheader.xml28
1 files changed, 20 insertions, 8 deletions
diff --git a/deheader.xml b/deheader.xml
index 8db4ed0..4e227ee 100644
--- a/deheader.xml
+++ b/deheader.xml
@@ -49,14 +49,6 @@ directives are left alone, because trying to reason about potential
combinations of -D and U options would be too complicated and prone to
weird errors.</para>
-<para>Test-compiling after running with <option>-r</option> will
-sometimes show that this tool removed some headers that are actually
-required for your build. This happens because
-<command>deheader</command> doesn't know about all the strange thungs
-your build system gets up to, and the problem of analyzing it to
-undertand them would be Turing-complete. Simply revert the altered
-files and continue.</para>
-
<para>It is recommended that you arrange to compile with options that
will stop the compiler on warnings when using this tool; otherwise it
will be report headers that only declare prototypes and return types
@@ -127,6 +119,26 @@ Takes a Python regular expression.</para>
</variablelist>
</refsect1>
+<refsect1 id='bugs'><title>BUGS</title>
+
+<para>Test-compiling after running with <option>-r</option> will
+sometimes show that this tool removed some headers that are actually
+required for your build. This happens because
+<command>deheader</command> doesn't know about all the strange thungs
+your build system gets up to, and the problem of analyzing it to
+undertand them would be Turing-complete. Simply revert the altered
+files and continue.</para>
+
+<para>Sufficiently perverse C++ can silently invalidate the simple
+algorithm this tool uses. Example: if an overloaded function has
+different overloads from two different files, removing one may expose
+the other, changing runtime semantics without a compile-time warning.
+Similarly, removing a later file containing a template specialization
+may lead to undefined behavior from a template defined in an earlier
+file. Use this with caution near such features, and test carefully.</para>
+
+</refsect1>
+
<refsect1 id='author'><title>AUTHOR</title>
<para>Eric S. Raymond <email>esr@snark.thyrsus.com</email>; (home page at <ulink
url='http://www.catb.org/~esr/'>http://www.catb.org/~esr/</ulink>).</para>