[Lldb-commits] Improving the documentation
John Lindal via lldb-commits
lldb-commits at lists.llvm.org
Wed Mar 9 11:47:56 PST 2016
Having completed my C++ app on top of lldb, I would like to improve the
function-level documentation so others don't have to blunder around in the
dark the way I did :)
Here is a patch for SBAddress.h
If this is the right direction, I will work my way through the rest of the
SB*.h files.
Thanks!
John Lindal
-----
diff --git a/include/lldb/API/SBAddress.h b/include/lldb/API/SBAddress.h
index 4cbbee9..b324e90 100644
--- a/include/lldb/API/SBAddress.h
+++ b/include/lldb/API/SBAddress.h
@@ -33,27 +33,100 @@ public:
const lldb::SBAddress &
operator = (const lldb::SBAddress &rhs);
+ //------------------------------------------------------------------
+ /// @return
+ /// true if the object is valid. If the object is invalid, it is
+ /// not safe to call any other methods.
+ //------------------------------------------------------------------
bool
IsValid () const;
+ //------------------------------------------------------------------
+ /// Clears the address. The object is no longer valid.
+ //------------------------------------------------------------------
void
Clear ();
+ //------------------------------------------------------------------
+ /// Get the file address.
+ ///
+ /// If an address comes from a file on disk that has section
+ /// relative addresses, then it has a virtual address that is
+ /// relative to a unique section in the object file.
+ ///
+ /// @return
+ /// The valid file virtual address, or LLDB_INVALID_ADDRESS if
+ /// the address doesn't have a file virtual address (image is
+ /// from memory only with no representation on disk).
+ //------------------------------------------------------------------
addr_t
GetFileAddress () const;
+ //------------------------------------------------------------------
+ /// Get the load address.
+ ///
+ /// If an address comes from a file on disk that has section
+ /// relative addresses, then it has a virtual address that is
+ /// relative to a unique section in the object file. Sections
+ /// get resolved at runtime by DynamicLoader plug-ins as images
+ /// (executables and shared libraries) get loaded/unloaded. If a
+ /// section is loaded, then the load address can be resolved.
+ ///
+ /// @param[in] target
+ /// The target in which to search.
+ ///
+ /// @return
+ /// The valid load virtual address, or LLDB_INVALID_ADDRESS if
+ /// the address is currently not loaded.
+ //------------------------------------------------------------------
addr_t
GetLoadAddress (const lldb::SBTarget &target) const;
+ //------------------------------------------------------------------
+ /// Set the section and address within the section. If it succeeds,
+ /// the object becomes valid.
+ ///
+ /// @param[in] section
+ /// A lldb::SBSection object to use as the section base.
+ ///
+ /// @param[in] offset
+ /// A new offset value for this object.
+ //------------------------------------------------------------------
void
SetAddress (lldb::SBSection section, lldb::addr_t offset);
+ //------------------------------------------------------------------
+ /// Tries to resolve the address within the target. If this fails,
+ /// assumes the address is absolute, e.g., on the stack or heap. If it
+ /// succeeds, the object becomes valid.
+ ///
+ /// @param[in] load_addr
+ /// A new offset value for this object.
+ ///
+ /// @param[in] target
+ /// The target within which the offset is valid.
+ //------------------------------------------------------------------
void
SetLoadAddress (lldb::addr_t load_addr,
lldb::SBTarget &target);
+
+ //------------------------------------------------------------------
+ /// Set the offset for this address, relative to the current section,
+ /// if any.
+ ///
+ /// @param[in] offset
+ /// A new offset value for this object.
+ //------------------------------------------------------------------
+ // FIXME: Should this be SetOffsetAddress?
bool
OffsetAddress (addr_t offset);
+ //------------------------------------------------------------------
+ /// Dump a description of this object to the given lldb::SBStream.
+ ///
+ /// @param[in] description
+ /// The stream to which to dump the object description.
+ //------------------------------------------------------------------
bool
GetDescription (lldb::SBStream &description);
@@ -63,10 +136,25 @@ public:
// will only return valid values if the address has been resolved to a
code
// or data address using "void SBAddress::SetLoadAddress(...)" or
// "lldb::SBAddress SBTarget::ResolveLoadAddress (...)".
+
+ //------------------------------------------------------------------
+ /// Lookup symbol information for this address. An address might
+ /// refer to code or data from an existing module, or it might refer to
+ /// something on the stack or heap. This function will only return
+ /// valid values if the address has been resolved to a code or data
+ /// address using "void SBAddress::SetLoadAddress(...)" or
+ /// "lldb::SBAddress SBTarget::ResolveLoadAddress (...)".
+ ///
+ /// @param[in] resolve_scope
+ /// lldb::SymbolContextItem value specifying the scope in which to
+ /// resolve this address.
+ ///
+ /// @return
+ /// lldb::SBSymbolContext with the result.
+ //------------------------------------------------------------------
lldb::SBSymbolContext
GetSymbolContext (uint32_t resolve_scope);
-
// The following functions grab individual objects for a given address
and
// are less efficient if you want more than one symbol related
objects.
// Use one of the following when you want multiple debug symbol
related
@@ -76,30 +164,67 @@ public:
// One or more bits from the SymbolContextItem enumerations can be
logically
// OR'ed together to more efficiently retrieve multiple symbol objects.
+ //------------------------------------------------------------------
+ /// @return section
+ /// The lldb::SBSection containing this address.
+ //------------------------------------------------------------------
lldb::SBSection
GetSection ();
+ //------------------------------------------------------------------
+ /// @return section
+ /// The offset for this address, relative to the section.
+ //------------------------------------------------------------------
lldb::addr_t
GetOffset ();
+ //------------------------------------------------------------------
+ /// @return section
+ /// The module containing this address.
+ //------------------------------------------------------------------
lldb::SBModule
GetModule ();
+ //------------------------------------------------------------------
+ /// @return section
+ /// The compile unit containing this address.
+ //------------------------------------------------------------------
lldb::SBCompileUnit
GetCompileUnit ();
+ //------------------------------------------------------------------
+ /// @return section
+ /// The function containing this address.
+ //------------------------------------------------------------------
lldb::SBFunction
GetFunction ();
+ //------------------------------------------------------------------
+ /// @return section
+ /// The block containing this address.
+ //------------------------------------------------------------------
lldb::SBBlock
GetBlock ();
+ //------------------------------------------------------------------
+ /// @return section
+ /// The symbol at this address.
+ //------------------------------------------------------------------
lldb::SBSymbol
GetSymbol ();
+ //------------------------------------------------------------------
+ /// @return section
+ /// The lldb::SBLineEntry specifying the file location that
+ /// corresponds to this address.
+ //------------------------------------------------------------------
lldb::SBLineEntry
GetLineEntry ();
+ //------------------------------------------------------------------
+ /// @return section
+ /// The classification for this address.
+ //------------------------------------------------------------------
lldb::AddressClass
GetAddressClass ();
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20160309/b0c9a919/attachment-0001.html>
More information about the lldb-commits
mailing list