diff options
Diffstat (limited to 'docs/ObjCPropertyDebugInfo.html')
-rw-r--r-- | docs/ObjCPropertyDebugInfo.html | 237 |
1 files changed, 0 insertions, 237 deletions
diff --git a/docs/ObjCPropertyDebugInfo.html b/docs/ObjCPropertyDebugInfo.html deleted file mode 100644 index c1482cf..0000000 --- a/docs/ObjCPropertyDebugInfo.html +++ /dev/null @@ -1,237 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" - "http://www.w3.org/TR/html4/strict.dtd"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> - <title>Debugging Information Extension for Objective C Properties</title> - <link rel="stylesheet" href="llvm.css" type="text/css"> -</head> -<body> - -<h1> - Debugging Information Extension for Objective C Properties -</h1> - -<ol> - <li><a href="#introduction">Introduction</a></li> - <li><a href="#proposal">Proposal</a></li> - <li><a href="#newattributes">New DWARF Attributes</a></li> - <li><a href="#newconstants">New DWARF Constants</a></li> - -</ol> - -<div class="doc_author"> - <p>Written by Jim Ingham and Devang Patel </p> -</div> - -<!-- *********************************************************************** --> -<h2> - <a name="introduction">Introduction</a> -</h2> -<!-- *********************************************************************** --> - -<div> -<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 -anything about the properties defined in Objective C interfaces. The debugger -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. -</p> - -</div> - - -<!-- *********************************************************************** --> -<h2> - <a name="proposal">Proposal</a> -</h2> -<!-- *********************************************************************** --> - -<div> -<p>Objective C properties are always backed by an instance variable. The -instance variables backing properties are identified using -DW_AT_APPLE_property_name attribute. The instance variables with this -attribute may not have data location attributes. The location of instance -variables is determined by debugger only after consulting Objective C runtime. -</p> - -<div class="doc_code"> -<pre> -@interface I1 { - int n2; -} - -@property p1; -@property p2; -@end - -@implementation I1 -@synthesize p1; -@synthesize p2 = n2; -@end - - -TAG_structure_type [7] * - AT_APPLE_runtime_class( 0x10 ) - AT_name( "I1" ) - AT_decl_file( "Objc_Property.m" ) - AT_decl_line( 3 ) - - TAG_member [8] - AT_name( "p1" ) - AT_APPLE_property_name(“p1”) - AT_type( {0x00000147} ( int ) ) - - TAG_member [8] - AT_name( "n2" ) - AT_APPLE_property_name(“p2”) - AT_type( {0x00000147} ( int ) ) -</pre> -</div> - -<p> Developers can decorate a property with attributes which are encoded using -DW_AT_APPLE_property_attribute. -</p> - -<div class="doc_code"> -<pre> -@property (readonly, nonatomic) int pr; - - -TAG_member [8] - AT_name(“pr”) - AT_APPLE_property_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 -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; -@end - -@implementation I1 -@synthesize p3; --(void)myOwnP3Setter:(int)a{ } -@end - -0x000003bd: TAG_structure_type [7] * - AT_APPLE_runtime_class( 0x10 ) - AT_name( "I1" ) - AT_decl_file( "Objc_Property.m" ) - AT_decl_line( 3 ) -0x000003f3: TAG_member [8] - AT_name( "p3" ) - AT_APPLE_property_name(“p3”) - AT_APPLE_property_setter(“myOwnP3Setter:”) - AT_type( {0x00000147} ( int ) ) -</pre> -</div> - -</div> - -<!-- *********************************************************************** --> -<h2> - <a name="newattributes">New DWARF Attributes</a> -</h2> -<!-- *********************************************************************** --> - -<div> -<table border="1" cellspacing="0"> - <tr> - <th width=200 >Attribute</th> - <th width=200 >Value</th> - <th width=200 >Classes</th> - </tr> - <tr> - <td width=200 >DW_AT_APPLE_property_name</td> - <td width=200 >0x3fe8</td> - <td width=200 >String</td> - </tr> - <tr> - <td width=200 >DW_AT_APPLE_property_getter</td> - <td width=200 >0x3fe9</td> - <td width=200 >String</td> - </tr> - <tr> - <td width=200 >DW_AT_APPLE_property_setter</td> - <td width=200 >0x3fea</td> - <td width=200 >String</td> - </tr> - <tr> - <td width=200 >DW_AT_APPLE_property_attribute</td> - <td width=200 >0x3feb</td> - <td width=200 >Constant</td> - </tr> -</table> - -</div> - -<!-- *********************************************************************** --> -<h2> - <a name="newconstants">New DWARF Constants</a> -</h2> -<!-- *********************************************************************** --> - -<div> -<table border="1" cellspacing="0"> - <tr> - <th width=200 >Name</th> - <th width=200 >Value</th> - </tr> - <tr> - <td width=200 >DW_AT_APPLE_PROPERTY_readonly</td> - <td width=200 >0x1</td> - </tr> - <tr> - <td width=200 >DW_AT_APPLE_PROPERTY_readwrite</td> - <td width=200 >0x2</td> - </tr> - <tr> - <td width=200 >DW_AT_APPLE_PROPERTY_assign</td> - <td width=200 >0x4</td> - </tr> - <tr> - <td width=200 >DW_AT_APPLE_PROPERTY_retain</td> - <td width=200 >0x8</td> - </tr> - <tr> - <td width=200 >DW_AT_APPLE_PROPERTY_copy</td> - <td width=200 >0x10</td> - </tr> - <tr> - <td width=200 >DW_AT_APPLE_PROPERTY_nonatomic</td> - <td width=200 >0x20</td> - </tr> -</table> - -</div> - -<!-- *********************************************************************** --> - -<hr> -<address> - <a href="http://jigsaw.w3.org/css-validator/check/referer"><img - src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a> - <a href="http://validator.w3.org/check/referer"><img - src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a> - - <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br> - Last modified: $Date: 2011-11-14 $ -</address> - -</body> -</html> |