Delete trailing whitespace to clean up.
authorEric Christopher <echristo@apple.com>
Tue, 6 Mar 2012 02:25:36 +0000 (02:25 +0000)
committerEric Christopher <echristo@apple.com>
Tue, 6 Mar 2012 02:25:36 +0000 (02:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152092 91177308-0d34-0410-b5e6-96231b3b80d8

docs/SourceLevelDebugging.html

index e7eac08ee81cea3079558be84fca750138d2c856..399187d0daa35cf5dab3a0a2d59c52485822e231 100644 (file)
@@ -55,7 +55,7 @@
   </ol></li>
   <li><a href="#llvmdwarfextension">LLVM Dwarf Extensions</a>
     <ol>
-      <li><a href="#objcproperty">Debugging Information Extension 
+      <li><a href="#objcproperty">Debugging Information Extension
          for Objective C Properties</a></li>
       <ul>
        <li><a href="#objcpropertyintroduction">Introduction</a></li>
@@ -244,8 +244,8 @@ height="369">
    for the optimizer to optimize the program and debugging information without
    necessarily having to know anything about debugging information.  In
    particular, the use of metadata avoids duplicated debugging information from
-   the beginning, and the global dead code elimination pass automatically 
-   deletes debugging information for a function if it decides to delete the 
+   the beginning, and the global dead code elimination pass automatically
+   deletes debugging information for a function if it decides to delete the
    function. </p>
 
 <p>To do this, most of the debugging information (descriptors for types,
@@ -254,9 +254,9 @@ height="369">
 
 <p>Debug information is designed to be agnostic about the target debugger and
    debugging information representation (e.g. DWARF/Stabs/etc).  It uses a
-   generic pass to decode the information that represents variables, types, 
-   functions, namespaces, etc: this allows for arbitrary source-language 
-   semantics and type-systems to be used, as long as there is a module 
+   generic pass to decode the information that represents variables, types,
+   functions, namespaces, etc: this allows for arbitrary source-language
+   semantics and type-systems to be used, as long as there is a module
    written for the target debugger to interpret the information. </p>
 
 <p>To provide basic functionality, the LLVM debugger does have to make some
@@ -292,7 +292,7 @@ height="369">
    the range 0x1000 through 0x2000 (there is a defined enum DW_TAG_user_base =
    0x1000.)</p>
 
-<p>The fields of debug descriptors used internally by LLVM 
+<p>The fields of debug descriptors used internally by LLVM
    are restricted to only the simple data types <tt>i32</tt>, <tt>i1</tt>,
    <tt>float</tt>, <tt>double</tt>, <tt>mdstring</tt> and <tt>mdnode</tt>. </p>
 
@@ -314,7 +314,7 @@ height="369">
    with the current debug version (LLVMDebugVersion = 8 &lt;&lt; 16 or
    0x80000 or 524288.)</a></p>
 
-<p>The details of the various descriptors follow.</p>  
+<p>The details of the various descriptors follow.</p>
 
 <!-- ======================================================================= -->
 <h4>
@@ -326,14 +326,14 @@ height="369">
 <div class="doc_code">
 <pre>
 !0 = metadata !{
-  i32,       ;; Tag = 17 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a> 
+  i32,       ;; Tag = 17 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a>
              ;; (DW_TAG_compile_unit)
-  i32,       ;; Unused field. 
-  i32,       ;; DWARF language identifier (ex. DW_LANG_C89) 
+  i32,       ;; Unused field.
+  i32,       ;; DWARF language identifier (ex. DW_LANG_C89)
   metadata,  ;; Source file name
   metadata,  ;; Source file directory (includes trailing slash)
   metadata   ;; Producer (ex. "4.0.1 LLVM (LLVM research group)")
-  i1,        ;; True if this is a main compile unit. 
+  i1,        ;; True if this is a main compile unit.
   i1,        ;; True if this is optimized.
   metadata,  ;; Flags
   i32        ;; Runtime version
@@ -353,7 +353,7 @@ height="369">
 
 <p>Compile unit descriptors provide the root context for objects declared in a
    specific compilation unit. File descriptors are defined using this context.
-   These descriptors are collected by a named metadata 
+   These descriptors are collected by a named metadata
    <tt>!llvm.dbg.cu</tt>. Compile unit descriptor keeps track of subprograms,
    global variables and type information.
 
@@ -369,7 +369,7 @@ height="369">
 <div class="doc_code">
 <pre>
 !0 = metadata !{
-  i32,       ;; Tag = 41 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a> 
+  i32,       ;; Tag = 41 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a>
              ;; (DW_TAG_file_type)
   metadata,  ;; Source file name
   metadata,  ;; Source file directory (includes trailing slash)
@@ -397,7 +397,7 @@ height="369">
 <div class="doc_code">
 <pre>
 !1 = metadata !{
-  i32,      ;; Tag = 52 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a> 
+  i32,      ;; Tag = 52 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a>
             ;; (DW_TAG_variable)
   i32,      ;; Unused field.
   metadata, ;; Reference to context descriptor
@@ -444,7 +444,7 @@ global variables are collected by named metadata <tt>!llvm.dbg.gv</tt>.</p>
   i1,       ;; True if the global is defined in the compile unit (not extern)
   i32,      ;; Virtuality, e.g. dwarf::DW_VIRTUALITY__virtual
   i32,      ;; Index into a virtual function
-  metadata, ;; indicates which base type contains the vtable pointer for the 
+  metadata, ;; indicates which base type contains the vtable pointer for the
             ;; derived class
   i32,      ;; Flags - Artifical, Private, Protected, Explicit, Prototyped.
   i1,       ;; isOptimized
@@ -512,9 +512,9 @@ global variables are collected by named metadata <tt>!llvm.dbg.gv</tt>.</p>
 <div class="doc_code">
 <pre>
 !4 = metadata !{
-  i32,      ;; Tag = 36 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a> 
+  i32,      ;; Tag = 36 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a>
             ;; (DW_TAG_base_type)
-  metadata, ;; Reference to context 
+  metadata, ;; Reference to context
   metadata, ;; Name (may be "" for anonymous types)
   metadata, ;; Reference to file where defined (may be NULL)
   i32,      ;; Line number where defined (may be 0)
@@ -574,8 +574,8 @@ DW_ATE_unsigned_char = 8
   i64,      ;; Offset in bits
   i32,      ;; Flags to encode attributes, e.g. private
   metadata, ;; Reference to type derived from
-  metadata, ;; (optional) Name of the Objective C property associated with 
-            ;; Objective-C an ivar 
+  metadata, ;; (optional) Name of the Objective C property associated with
+            ;; Objective-C an ivar
   metadata, ;; (optional) Name of the Objective C property getter selector.
   metadata, ;; (optional) Name of the Objective C property setter selector.
   i32       ;; (optional) Objective C property attributes.
@@ -609,8 +609,8 @@ DW_TAG_restrict_type    = 55
 
 <p><tt>DW_TAG_typedef</tt> is used to provide a name for the derived type.</p>
 
-<p><tt>DW_TAG_pointer_type</tt>, <tt>DW_TAG_reference_type</tt>, 
-   <tt>DW_TAG_const_type</tt>, <tt>DW_TAG_volatile_type</tt> and 
+<p><tt>DW_TAG_pointer_type</tt>, <tt>DW_TAG_reference_type</tt>,
+   <tt>DW_TAG_const_type</tt>, <tt>DW_TAG_volatile_type</tt> and
    <tt>DW_TAG_restrict_type</tt> are used to qualify
    the <a href="#format_derived_type">derived type</a>. </p>
 
@@ -750,7 +750,7 @@ DW_TAG_inheritance      = 28
 <div class="doc_code">
 <pre>
 !6 = metadata !{
-  i32,      ;; Tag = 40 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a> 
+  i32,      ;; Tag = 40 + <a href="#LLVMDebugVersion">LLVMDebugVersion</a>
             ;; (DW_TAG_enumerator)
   metadata, ;; Name
   i64       ;; Value
@@ -918,27 +918,27 @@ entry:
 
 declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone
 
-!0 = metadata !{i32 459008, metadata !1, metadata !"X", 
+!0 = metadata !{i32 459008, metadata !1, metadata !"X",
                 metadata !3, i32 2, metadata !6}; [ DW_TAG_auto_variable ]
 !1 = metadata !{i32 458763, metadata !2}; [DW_TAG_lexical_block ]
-!2 = metadata !{i32 458798, i32 0, metadata !3, metadata !"foo", metadata !"foo", 
-               metadata !"foo", metadata !3, i32 1, metadata !4, 
+!2 = metadata !{i32 458798, i32 0, metadata !3, metadata !"foo", metadata !"foo",
+               metadata !"foo", metadata !3, i32 1, metadata !4,
                i1 false, i1 true}; [DW_TAG_subprogram ]
-!3 = metadata !{i32 458769, i32 0, i32 12, metadata !"foo.c", 
-                metadata !"/private/tmp", metadata !"clang 1.1", i1 true, 
+!3 = metadata !{i32 458769, i32 0, i32 12, metadata !"foo.c",
+                metadata !"/private/tmp", metadata !"clang 1.1", i1 true,
                 i1 false, metadata !"", i32 0}; [DW_TAG_compile_unit ]
-!4 = metadata !{i32 458773, metadata !3, metadata !"", null, i32 0, i64 0, i64 0, 
+!4 = metadata !{i32 458773, metadata !3, metadata !"", null, i32 0, i64 0, i64 0,
                 i64 0, i32 0, null, metadata !5, i32 0}; [DW_TAG_subroutine_type ]
 !5 = metadata !{null}
-!6 = metadata !{i32 458788, metadata !3, metadata !"int", metadata !3, i32 0, 
+!6 = metadata !{i32 458788, metadata !3, metadata !"int", metadata !3, i32 0,
                 i64 32, i64 32, i64 0, i32 0, i32 5}; [DW_TAG_base_type ]
 !7 = metadata !{i32 2, i32 7, metadata !1, null}
 !8 = metadata !{i32 2, i32 3, metadata !1, null}
-!9 = metadata !{i32 459008, metadata !1, metadata !"Y", metadata !3, i32 3, 
+!9 = metadata !{i32 459008, metadata !1, metadata !"Y", metadata !3, i32 3,
                 metadata !6}; [ DW_TAG_auto_variable ]
 !10 = metadata !{i32 3, i32 7, metadata !1, null}
 !11 = metadata !{i32 3, i32 3, metadata !1, null}
-!12 = metadata !{i32 459008, metadata !13, metadata !"Z", metadata !3, i32 5, 
+!12 = metadata !{i32 459008, metadata !13, metadata !"Z", metadata !3, i32 5,
                  metadata !6}; [ DW_TAG_auto_variable ]
 !13 = metadata !{i32 458763, metadata !1}; [DW_TAG_lexical_block ]
 !14 = metadata !{i32 5, i32 9, metadata !13, null}
@@ -958,7 +958,7 @@ declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone
 
 <div class="doc_code">
 <pre>
-call void @llvm.dbg.declare(metadata, metadata !0), !dbg !7   
+call void @llvm.dbg.declare(metadata, metadata !0), !dbg !7
 </pre>
 </div>
 
@@ -972,9 +972,9 @@ call void @llvm.dbg.declare(metadata, metadata !0), !dbg !7
 <pre>
 !7 = metadata !{i32 2, i32 7, metadata !1, null}
 !1 = metadata !{i32 458763, metadata !2}; [DW_TAG_lexical_block ]
-!2 = metadata !{i32 458798, i32 0, metadata !3, metadata !"foo", 
-                metadata !"foo", metadata !"foo", metadata !3, i32 1, 
-                metadata !4, i1 false, i1 true}; [DW_TAG_subprogram ]   
+!2 = metadata !{i32 458798, i32 0, metadata !3, metadata !"foo",
+                metadata !"foo", metadata !"foo", metadata !3, i32 1,
+                metadata !4, i1 false, i1 true}; [DW_TAG_subprogram ]
 </pre>
 </div>
 
@@ -999,7 +999,7 @@ call void @llvm.dbg.declare(metadata, metadata !12), !dbg !14
 
 <p>The second intrinsic
    <tt>%<a href="#format_common_declare">llvm.dbg.declare</a></tt>
-   encodes debugging information for variable <tt>Z</tt>. The metadata 
+   encodes debugging information for variable <tt>Z</tt>. The metadata
    <tt>!dbg !14</tt> attached to the intrinsic provides scope information for
    the variable <tt>Z</tt>.</p>
 
@@ -1080,9 +1080,9 @@ int main(int argc, char *argv[]) {
   i32 524305,    ;; Tag
   i32 0,         ;; Unused
   i32 4,         ;; Language Id
-  metadata !"MySource.cpp", 
-  metadata !"/Users/mine/sources", 
-  metadata !"4.2.1 (Based on Apple Inc. build 5649) (LLVM build 00)", 
+  metadata !"MySource.cpp",
+  metadata !"/Users/mine/sources",
+  metadata !"4.2.1 (Based on Apple Inc. build 5649) (LLVM build 00)",
   i1 true,       ;; Main Compile Unit
   i1 false,      ;; Optimized compile unit
   metadata !"",  ;; Compiler flags
@@ -1093,8 +1093,8 @@ int main(int argc, char *argv[]) {
 ;;
 !1 = metadata !{
   i32 524329,    ;; Tag
-  metadata !"MySource.cpp", 
-  metadata !"/Users/mine/sources", 
+  metadata !"MySource.cpp",
+  metadata !"/Users/mine/sources",
   metadata !2    ;; Compile unit
 }
 
@@ -1104,7 +1104,7 @@ int main(int argc, char *argv[]) {
 !3 = metadata !{
   i32 524329,    ;; Tag
   metadata !"Myheader.h"
-  metadata !"/Users/mine/sources", 
+  metadata !"/Users/mine/sources",
   metadata !2    ;; Compile unit
 }
 
@@ -1112,9 +1112,9 @@ int main(int argc, char *argv[]) {
 </pre>
 </div>
 
-<p>llvm::Instruction provides easy access to metadata attached with an 
+<p>llvm::Instruction provides easy access to metadata attached with an
 instruction. One can extract line number information encoded in LLVM IR
-using <tt>Instruction::getMetadata()</tt> and 
+using <tt>Instruction::getMetadata()</tt> and
 <tt>DILocation::getLineNumber()</tt>.
 <pre>
  if (MDNode *N = I->getMetadata("dbg")) {  // Here I is an LLVM instruction
@@ -1177,7 +1177,7 @@ int MyGlobal = 100;
 ;;
 ;; Define the basic type of 32 bit signed integer.  Note that since int is an
 ;; intrinsic type the source file is NULL and line 0.
-;;    
+;;
 !4 = metadata !{
   i32 524324,              ;; Tag
   metadata !1,             ;; Context
@@ -1232,7 +1232,7 @@ int main(int argc, char *argv[]) {
   metadata !1,       ;; File
   i32 1,             ;; Line number
   metadata !4,       ;; Type
-  i1 false,          ;; Is local 
+  i1 false,          ;; Is local
   i1 true,           ;; Is definition
   i32 0,             ;; Virtuality attribute, e.g. pure virtual function
   i32 0,             ;; Index into virtual table for C++ methods
@@ -1326,7 +1326,7 @@ define i32 @main(i32 %argc, i8** %argv) {
 !2 = metadata !{
   i32 524324,        ;; Tag
   metadata !1,       ;; Context
-  metadata !"unsigned char", 
+  metadata !"unsigned char",
   metadata !1,       ;; File
   i32 0,             ;; Line number
   i64 8,             ;; Size in Bits
@@ -1835,15 +1835,15 @@ Properties</a></li>
 <!-- *********************************************************************** -->
 
 <div>
-<p>Objective C provides a simpler way to declare and define accessor methods 
-using declared properties. The language provides features to declare a 
+<p>Objective C provides a simpler way to declare and define accessor methods
+using declared properties. The language provides features to declare a
 property and to let compiler synthesize accessor methods.
 </p>
 
-<p>The debugger lets developer inspect Objective C interfaces and their 
-instance variables and class variables. However, the debugger does not know 
+<p>The debugger lets developer inspect Objective C interfaces and their
+instance variables and class variables. However, the debugger does not know
 anything about the properties defined in Objective C interfaces. The debugger
-consumes information generated by compiler in DWARF format. The format does 
+consumes information generated by compiler in DWARF format. The format does
 not support encoding of Objective C properties. This proposal describes DWARF
 extensions to encode Objective C properties, which the debugger can use to let
 developers inspect Objective C properties.
@@ -1860,27 +1860,27 @@ developers inspect Objective C properties.
 
 <div>
 <p>Objective C properties exist separately from class members. A property
-can be defined only by &quot;setter&quot; and &quot;getter&quot; selectors, and 
-be calculated anew on each access.  Or a property can just be a direct access 
-to some declared ivar.  Finally it can have an ivar &quot;automatically 
-synthesized&quot; for it by the compiler, in which case the property can be 
-referred to in user code directly using the standard C dereference syntax as 
-well as through the property &quot;dot&quot; syntax, but there is no entry in 
+can be defined only by &quot;setter&quot; and &quot;getter&quot; selectors, and
+be calculated anew on each access.  Or a property can just be a direct access
+to some declared ivar.  Finally it can have an ivar &quot;automatically
+synthesized&quot; for it by the compiler, in which case the property can be
+referred to in user code directly using the standard C dereference syntax as
+well as through the property &quot;dot&quot; syntax, but there is no entry in
 the @interface declaration corresponding to this ivar.
 </p>
 <p>
-To facilitate debugging, these properties we will add a new DWARF TAG into the 
-DW_TAG_structure_type definition for the class to hold the description of a 
+To facilitate debugging, these properties we will add a new DWARF TAG into the
+DW_TAG_structure_type definition for the class to hold the description of a
 given property, and a set of DWARF attributes that provide said description.
-The property tag will also contain the name and declared type of the property.  
+The property tag will also contain the name and declared type of the property.
 </p>
 <p>
-If there is a related ivar, there will also be a DWARF property attribute placed 
-in the DW_TAG_member DIE for that ivar referring back to the property TAG for 
-that property. And in the case where the compiler synthesizes the ivar directly, 
-the compiler is expected to generate a DW_TAG_member for that ivar (with the 
-DW_AT_artificial set to 1), whose name will be the name used to access this 
-ivar directly in code, and with the property attribute pointing back to the 
+If there is a related ivar, there will also be a DWARF property attribute placed
+in the DW_TAG_member DIE for that ivar referring back to the property TAG for
+that property. And in the case where the compiler synthesizes the ivar directly,
+the compiler is expected to generate a DW_TAG_member for that ivar (with the
+DW_AT_artificial set to 1), whose name will be the name used to access this
+ivar directly in code, and with the property attribute pointing back to the
 property it is backing.
 </p>
 <p>
@@ -1889,17 +1889,17 @@ The following examples will serve as illustration for our discussion:
 
 <div class="doc_code">
 <pre>
-@interface I1 { 
+@interface I1 {
   int n2;
-} 
+}
 
-@property int p1; 
-@property int p2; 
+@property int p1;
+@property int p2;
 @end
 
-@implementation I1 
-@synthesize p1; 
-@synthesize p2 = n2; 
+@implementation I1
+@synthesize p1;
+@synthesize p2 = n2;
 @end
 </pre>
 </div>
@@ -1909,10 +1909,10 @@ This produces the following DWARF (this is a &quot;pseudo dwarfdump&quot; output
 </p>
 <div class="doc_code">
 <pre>
-0x00000100:  TAG_structure_type [7] * 
+0x00000100:  TAG_structure_type [7] *
                AT_APPLE_runtime_class( 0x10 )
                AT_name( "I1" )
-               AT_decl_file( "Objc_Property.m" ) 
+               AT_decl_file( "Objc_Property.m" )
                AT_decl_line( 3 )
 
 0x00000110    TAG_APPLE_property
@@ -1923,13 +1923,13 @@ This produces the following DWARF (this is a &quot;pseudo dwarfdump&quot; output
                 AT_name ( "p2" )
                 AT_type ( {0x00000150} ( int ) )
 
-0x00000130:   TAG_member [8] 
+0x00000130:   TAG_member [8]
                 AT_name( "_p1" )
                 AT_APPLE_property ( {0x00000110} "p1" )
                 AT_type( {0x00000150} ( int ) )
                 AT_artificial ( 0x1 )
 
-0x00000140:    TAG_member [8] 
+0x00000140:    TAG_member [8]
                  AT_name( "n2" )
                  AT_APPLE_property ( {0x00000120} "p2" )
                  AT_type( {0x00000150} ( int ) )
@@ -1938,7 +1938,7 @@ This produces the following DWARF (this is a &quot;pseudo dwarfdump&quot; output
 </pre>
 </div>
 
-<p> Note, the current convention is that the name of the ivar for an 
+<p> Note, the current convention is that the name of the ivar for an
 auto-synthesized property is the name of the property from which it derives with
 an underscore prepended, as is shown in the example.
 But we actually don't need to know this convention, since we are given the name
@@ -1946,14 +1946,14 @@ of the ivar directly.
 </p>
 
 <p>
-Also, it is common practice in ObjC to have different property declarations in 
-the @interface and @implementation - e.g. to provide a read-only property in 
-the interface,and a read-write interface in the implementation.  In that case, 
-the compiler should emit whichever property declaration will be in force in the 
+Also, it is common practice in ObjC to have different property declarations in
+the @interface and @implementation - e.g. to provide a read-only property in
+the interface,and a read-write interface in the implementation.  In that case,
+the compiler should emit whichever property declaration will be in force in the
 current translation unit.
 </p>
 
-<p> Developers can decorate a property with attributes which are encoded using 
+<p> Developers can decorate a property with attributes which are encoded using
 DW_AT_APPLE_property_attribute.
 </p>
 
@@ -1967,26 +1967,26 @@ Which produces a property tag:
 <p>
 <div class="doc_code">
 <pre>
-TAG_APPLE_property [8] 
-  AT_name( "pr" ) 
-  AT_type ( {0x00000147} (int) ) 
+TAG_APPLE_property [8]
+  AT_name( "pr" )
+  AT_type ( {0x00000147} (int) )
   AT_APPLE_property_attribute (DW_APPLE_PROPERTY_readonly, DW_APPLE_PROPERTY_nonatomic)
 </pre>
 </div>
 
-<p> The setter and getter method names are attached to the property using 
+<p> The setter and getter method names are attached to the property using
 DW_AT_APPLE_property_setter and DW_AT_APPLE_property_getter attributes.
 </p>
 <div class="doc_code">
 <pre>
-@interface I1 
-@property (setter=myOwnP3Setter:) int p3; 
--(void)myOwnP3Setter:(int)a; 
+@interface I1
+@property (setter=myOwnP3Setter:) int p3;
+-(void)myOwnP3Setter:(int)a;
 @end
 
-@implementation I1 
+@implementation I1
 @synthesize p3;
--(void)myOwnP3Setter:(int)a{ } 
+-(void)myOwnP3Setter:(int)a{ }
 @end
 </pre>
 </div>
@@ -1996,19 +1996,19 @@ The DWARF for this would be:
 </p>
 <div class="doc_code">
 <pre>
-0x000003bd: TAG_structure_type [7] * 
+0x000003bd: TAG_structure_type [7] *
               AT_APPLE_runtime_class( 0x10 )
               AT_name( "I1" )
-              AT_decl_file( "Objc_Property.m" ) 
+              AT_decl_file( "Objc_Property.m" )
               AT_decl_line( 3 )
 
 0x000003cd      TAG_APPLE_property
                   AT_name ( "p3" )
                   AT_APPLE_property_setter ( "myOwnP3Setter:" )
                   AT_type( {0x00000147} ( int ) )
-              
-0x000003f3:     TAG_member [8] 
-                  AT_name( "_p3" ) 
+
+0x000003f3:     TAG_member [8]
+                  AT_name( "_p3" )
                   AT_type ( {0x00000147} ( int ) )
                   AT_APPLE_property ( {0x000003cd} )
                   AT_artificial ( 0x1 )