aboutsummaryrefslogtreecommitdiff
path: root/docs/SourceLevelDebugging.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/SourceLevelDebugging.html')
-rw-r--r--docs/SourceLevelDebugging.html104
1 files changed, 52 insertions, 52 deletions
diff --git a/docs/SourceLevelDebugging.html b/docs/SourceLevelDebugging.html
index e4566179ea..c9ae0202de 100644
--- a/docs/SourceLevelDebugging.html
+++ b/docs/SourceLevelDebugging.html
@@ -71,7 +71,7 @@ height="369">
<h2><a name="introduction">Introduction</a></h2>
<!-- *********************************************************************** -->
-<div class="doc_text">
+<div>
<p>This document is the central repository for all information pertaining to
debug information in LLVM. It describes the <a href="#format">actual format
@@ -80,14 +80,12 @@ height="369">
Further, this document provides specific examples of what debug information
for C/C++ looks like.</p>
-</div>
-
<!-- ======================================================================= -->
<h3>
<a name="phil">Philosophy behind LLVM debugging information</a>
</h3>
-<div class="doc_text">
+<div>
<p>The idea of the LLVM debugging information is to capture how the important
pieces of the source-language's Abstract Syntax Tree map onto LLVM code.
@@ -137,7 +135,7 @@ height="369">
<a name="consumers">Debug information consumers</a>
</h3>
-<div class="doc_text">
+<div>
<p>The role of debug information is to provide meta information normally
stripped away during the compilation process. This meta information provides
@@ -161,7 +159,7 @@ height="369">
<a name="debugopt">Debugging optimized code</a>
</h3>
-<div class="doc_text">
+<div>
<p>An extremely high priority of LLVM debugging information is to make it
interact well with optimizations and analysis. In particular, the LLVM debug
@@ -226,13 +224,15 @@ height="369">
</div>
+</div>
+
<!-- *********************************************************************** -->
<h2>
<a name="format">Debugging information format</a>
</h2>
<!-- *********************************************************************** -->
-<div class="doc_text">
+<div>
<p>LLVM debugging information has been carefully designed to make it possible
for the optimizer to optimize the program and debugging information without
@@ -265,14 +265,12 @@ height="369">
common to any source-language. The <a href="#ccxx_frontend">next section</a>
describes the data layout conventions used by the C and C++ front-ends.</p>
-</div>
-
<!-- ======================================================================= -->
<h3>
<a name="debug_info_descriptors">Debug information descriptors</a>
</h3>
-<div class="doc_text">
+<div>
<p>In consideration of the complexity and volume of debug information, LLVM
provides a specification for well formed debug descriptors. </p>
@@ -312,14 +310,12 @@ height="369">
<p>The details of the various descriptors follow.</p>
-</div>
-
<!-- ======================================================================= -->
<h4>
<a name="format_compile_units">Compile unit descriptors</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -355,7 +351,7 @@ height="369">
<a name="format_files">File descriptors</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -384,7 +380,7 @@ height="369">
<a name="format_global_variables">Global variable descriptors</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -417,7 +413,7 @@ global variables are collected by named metadata <tt>!llvm.dbg.gv</tt>.</p>
<a name="format_subprograms">Subprogram descriptors</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -461,7 +457,7 @@ global variables are collected by named metadata <tt>!llvm.dbg.gv</tt>.</p>
<a name="format_blocks">Block descriptors</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -487,7 +483,7 @@ global variables are collected by named metadata <tt>!llvm.dbg.gv</tt>.</p>
<a name="format_basic_type">Basic type descriptors</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -539,7 +535,7 @@ DW_ATE_unsigned_char = 8
<a name="format_derived_type">Derived type descriptors</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -611,7 +607,7 @@ DW_TAG_restrict_type = 55
<a name="format_composite_type">Composite type descriptors</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -698,7 +694,7 @@ DW_TAG_inheritance = 28
<a name="format_subrange">Subrange descriptors</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -724,7 +720,7 @@ DW_TAG_inheritance = 28
<a name="format_enumeration">Enumerator descriptors</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -748,7 +744,7 @@ DW_TAG_inheritance = 28
<a name="format_variables">Local variables</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -787,24 +783,24 @@ DW_TAG_return_variable = 258
</div>
+</div>
+
<!-- ======================================================================= -->
<h3>
<a name="format_common_intrinsics">Debugger intrinsic functions</a>
</h3>
-<div class="doc_text">
+<div>
<p>LLVM uses several intrinsic functions (name prefixed with "llvm.dbg") to
provide debug information at various points in generated code.</p>
-</div>
-
<!-- ======================================================================= -->
<h4>
<a name="format_common_declare">llvm.dbg.declare</a>
</h4>
-<div class="doc_text">
+<div>
<pre>
void %<a href="#format_common_declare">llvm.dbg.declare</a>(metadata, metadata)
</pre>
@@ -819,7 +815,7 @@ DW_TAG_return_variable = 258
<a name="format_common_value">llvm.dbg.value</a>
</h4>
-<div class="doc_text">
+<div>
<pre>
void %<a href="#format_common_value">llvm.dbg.value</a>(metadata, i64, metadata)
</pre>
@@ -831,12 +827,14 @@ DW_TAG_return_variable = 258
user source variable. </p>
</div>
+</div>
+
<!-- ======================================================================= -->
<h3>
<a name="format_common_lifetime">Object lifetimes and scoping</a>
</h3>
-<div class="doc_text">
+<div>
<p>In many languages, the local variables in functions can have their lifetimes
or scopes limited to a subset of a function. In the C family of languages,
for example, variables are only live (readable and writable) within the
@@ -994,13 +992,15 @@ call void @llvm.dbg.declare(metadata, metadata !12), !dbg !14
</div>
+</div>
+
<!-- *********************************************************************** -->
<h2>
<a name="ccxx_frontend">C/C++ front-end specific debug information</a>
</h2>
<!-- *********************************************************************** -->
-<div class="doc_text">
+<div>
<p>The C and C++ front-ends represent information about the program in a format
that is effectively identical
@@ -1021,14 +1021,12 @@ call void @llvm.dbg.declare(metadata, metadata !12), !dbg !14
<p>The following sections provide examples of various C/C++ constructs and the
debug information that would best describe those constructs.</p>
-</div>
-
<!-- ======================================================================= -->
<h3>
<a name="ccxx_compile_units">C/C++ source file information</a>
</h3>
-<div class="doc_text">
+<div>
<p>Given the source files <tt>MySource.cpp</tt> and <tt>MyHeader.h</tt> located
in the directory <tt>/Users/mine/sources</tt>, the following code:</p>
@@ -1106,7 +1104,7 @@ using <tt>Instruction::getMetadata()</tt> and
<a name="ccxx_global_variable">C/C++ global variable information</a>
</h3>
-<div class="doc_text">
+<div>
<p>Given an integer global variable declared as follows:</p>
@@ -1176,7 +1174,7 @@ int MyGlobal = 100;
<a name="ccxx_subprogram">C/C++ function information</a>
</h3>
-<div class="doc_text">
+<div>
<p>Given a function declared as follows:</p>
@@ -1233,18 +1231,16 @@ define i32 @main(i32 %argc, i8** %argv) {
<a name="ccxx_basic_types">C/C++ basic types</a>
</h3>
-<div class="doc_text">
+<div>
<p>The following are the basic type descriptors for C/C++ core types:</p>
-</div>
-
<!-- ======================================================================= -->
<h4>
<a name="ccxx_basic_type_bool">bool</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -1270,7 +1266,7 @@ define i32 @main(i32 %argc, i8** %argv) {
<a name="ccxx_basic_char">char</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -1296,7 +1292,7 @@ define i32 @main(i32 %argc, i8** %argv) {
<a name="ccxx_basic_unsigned_char">unsigned char</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -1322,7 +1318,7 @@ define i32 @main(i32 %argc, i8** %argv) {
<a name="ccxx_basic_short">short</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -1348,7 +1344,7 @@ define i32 @main(i32 %argc, i8** %argv) {
<a name="ccxx_basic_unsigned_short">unsigned short</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -1374,7 +1370,7 @@ define i32 @main(i32 %argc, i8** %argv) {
<a name="ccxx_basic_int">int</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -1399,7 +1395,7 @@ define i32 @main(i32 %argc, i8** %argv) {
<a name="ccxx_basic_unsigned_int">unsigned int</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -1425,7 +1421,7 @@ define i32 @main(i32 %argc, i8** %argv) {
<a name="ccxx_basic_long_long">long long</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -1451,7 +1447,7 @@ define i32 @main(i32 %argc, i8** %argv) {
<a name="ccxx_basic_unsigned_long_long">unsigned long long</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -1477,7 +1473,7 @@ define i32 @main(i32 %argc, i8** %argv) {
<a name="ccxx_basic_float">float</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -1503,7 +1499,7 @@ define i32 @main(i32 %argc, i8** %argv) {
<a name="ccxx_basic_double">double</a>
</h4>
-<div class="doc_text">
+<div>
<div class="doc_code">
<pre>
@@ -1524,12 +1520,14 @@ define i32 @main(i32 %argc, i8** %argv) {
</div>
+</div>
+
<!-- ======================================================================= -->
<h3>
<a name="ccxx_derived_types">C/C++ derived types</a>
</h3>
-<div class="doc_text">
+<div>
<p>Given the following as an example of C/C++ derived type:</p>
@@ -1614,7 +1612,7 @@ typedef const int *IntPtr;
<a name="ccxx_composite_types">C/C++ struct/union types</a>
</h3>
-<div class="doc_text">
+<div>
<p>Given the following as an example of C/C++ struct type:</p>
@@ -1727,7 +1725,7 @@ struct Color {
<a name="ccxx_enumeration_types">C/C++ enumeration types</a>
</h3>
-<div class="doc_text">
+<div>
<p>Given the following as an example of C/C++ enumeration type:</p>
@@ -1788,6 +1786,8 @@ enum Trees {
</div>
+</div>
+
<!-- *********************************************************************** -->
<hr>