LLDB API Documentation

SBAddress.h
Go to the documentation of this file.
1 //===-- SBAddress.h ---------------------------------------------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef LLDB_SBAddress_h_
11 #define LLDB_SBAddress_h_
12 
13 #include "lldb/API/SBDefines.h"
14 #include "lldb/API/SBModule.h"
15 
16 namespace lldb {
17 
18 class LLDB_API SBAddress {
19 public:
20  SBAddress();
21 
22  SBAddress(const lldb::SBAddress &rhs);
23 
24  SBAddress(lldb::SBSection section, lldb::addr_t offset);
25 
26  // Create an address by resolving a load address using the supplied target
27  SBAddress(lldb::addr_t load_addr, lldb::SBTarget &target);
28 
29  ~SBAddress();
30 
31  const lldb::SBAddress &operator=(const lldb::SBAddress &rhs);
32 
33  bool IsValid() const;
34 
35  void Clear();
36 
37  addr_t GetFileAddress() const;
38 
39  addr_t GetLoadAddress(const lldb::SBTarget &target) const;
40 
41  void SetAddress(lldb::SBSection section, lldb::addr_t offset);
42 
43  void SetLoadAddress(lldb::addr_t load_addr, lldb::SBTarget &target);
44  bool OffsetAddress(addr_t offset);
45 
46  bool GetDescription(lldb::SBStream &description);
47 
48  // The following queries can lookup symbol information for a given address.
49  // An address might refer to code or data from an existing module, or it
50  // might refer to something on the stack or heap. The following functions
51  // will only return valid values if the address has been resolved to a code
52  // or data address using "void SBAddress::SetLoadAddress(...)" or
53  // "lldb::SBAddress SBTarget::ResolveLoadAddress (...)".
54  lldb::SBSymbolContext GetSymbolContext(uint32_t resolve_scope);
55 
56  // The following functions grab individual objects for a given address and
57  // are less efficient if you want more than one symbol related objects.
58  // Use one of the following when you want multiple debug symbol related
59  // objects for an address:
60  // lldb::SBSymbolContext SBAddress::GetSymbolContext (uint32_t
61  // resolve_scope);
62  // lldb::SBSymbolContext SBTarget::ResolveSymbolContextForAddress (const
63  // SBAddress &addr, uint32_t resolve_scope);
64  // One or more bits from the SymbolContextItem enumerations can be logically
65  // OR'ed together to more efficiently retrieve multiple symbol objects.
66 
67  lldb::SBSection GetSection();
68 
69  lldb::addr_t GetOffset();
70 
71  lldb::SBModule GetModule();
72 
73  lldb::SBCompileUnit GetCompileUnit();
74 
75  lldb::SBFunction GetFunction();
76 
77  lldb::SBBlock GetBlock();
78 
79  lldb::SBSymbol GetSymbol();
80 
81  lldb::SBLineEntry GetLineEntry();
82 
83  lldb::AddressClass GetAddressClass();
84 
85 protected:
86  friend class SBBlock;
87  friend class SBBreakpointLocation;
88  friend class SBFrame;
89  friend class SBFunction;
90  friend class SBLineEntry;
91  friend class SBInstruction;
92  friend class SBModule;
93  friend class SBSection;
94  friend class SBSymbol;
95  friend class SBSymbolContext;
96  friend class SBTarget;
97  friend class SBThread;
98  friend class SBThreadPlan;
99  friend class SBValue;
100  friend class SBQueueItem;
101 
102  lldb_private::Address *operator->();
103 
104  const lldb_private::Address *operator->() const;
105 
106  lldb_private::Address *get();
107 
108  lldb_private::Address &ref();
109 
110  const lldb_private::Address &ref() const;
111 
112  SBAddress(const lldb_private::Address *lldb_object_ptr);
113 
114  void SetAddress(const lldb_private::Address *lldb_object_ptr);
115 
116 private:
117  std::unique_ptr<lldb_private::Address> m_opaque_ap;
118 };
119 
120 } // namespace lldb
121 
122 #endif // LLDB_SBAddress_h_
class LLDB_API SBAddress
Definition: SBDefines.h:31