Author: Ebuka Ezike
Date: 2026-01-12T21:19:59Z
New Revision: a76dbdd2685553e5a219c06f06e40438c9dad9ad

URL: 
https://github.com/llvm/llvm-project/commit/a76dbdd2685553e5a219c06f06e40438c9dad9ad
DIFF: 
https://github.com/llvm/llvm-project/commit/a76dbdd2685553e5a219c06f06e40438c9dad9ad.diff

LOG: [lldb] Change SBSymbol::GetID() to return LLDB_INVALID_SYMBOL_ID for 
invalid symbols (#175545)

Return UINT32_MAX instead of 0 when SBSymbol has no underlying symbol,
since 0 is a valid symbol ID.
This makes it possible to distinguish between a valid symbol with ID 0
and an invalid/uninitialised symbol.

From
https://github.com/llvm/llvm-project/pull/172687#discussion_r2628319927

Added: 
    

Modified: 
    lldb/include/lldb/API/SBSymbol.h
    lldb/include/lldb/Symbol/Symbol.h
    lldb/include/lldb/lldb-defines.h
    lldb/source/API/SBSymbol.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/include/lldb/API/SBSymbol.h 
b/lldb/include/lldb/API/SBSymbol.h
index 3ec0dab5112f5..d4c4c7011ce34 100644
--- a/lldb/include/lldb/API/SBSymbol.h
+++ b/lldb/include/lldb/API/SBSymbol.h
@@ -90,7 +90,8 @@ class LLDB_API SBSymbol {
   /// Get the ID of this symbol, usually the original symbol table index.
   ///
   /// \returns
-  ///   Returns the ID of this symbol.
+  ///     LLDB_INVALID_SYMBOL_ID if this object does not contain a valid symbol
+  ///     object. Otherwise, Returns a valid symbol ID.
   uint32_t GetID() const;
 
   bool operator==(const lldb::SBSymbol &rhs) const;

diff  --git a/lldb/include/lldb/Symbol/Symbol.h 
b/lldb/include/lldb/Symbol/Symbol.h
index b994c34e46493..1f9d222b6ab29 100644
--- a/lldb/include/lldb/Symbol/Symbol.h
+++ b/lldb/include/lldb/Symbol/Symbol.h
@@ -318,8 +318,8 @@ class Symbol : public SymbolContextScope {
 
   void SynthesizeNameIfNeeded() const;
 
-  uint32_t m_uid =
-      UINT32_MAX;           // User ID (usually the original symbol table 
index)
+  uint32_t m_uid = LLDB_INVALID_SYMBOL_ID; // User ID (usually the original
+                                           // symbol table index)
   uint16_t m_type_data = 0; // data specific to m_type
   uint16_t m_type_data_resolved : 1, // True if the data in m_type_data has
                                      // already been calculated

diff  --git a/lldb/include/lldb/lldb-defines.h 
b/lldb/include/lldb/lldb-defines.h
index c54ef884b01dc..52bf7c5cce947 100644
--- a/lldb/include/lldb/lldb-defines.h
+++ b/lldb/include/lldb/lldb-defines.h
@@ -90,6 +90,7 @@
 #define LLDB_INVALID_THREAD_ID 0
 #define LLDB_INVALID_FRAME_ID UINT32_MAX
 #define LLDB_INVALID_SIGNAL_NUMBER INT32_MAX
+#define LLDB_INVALID_SYMBOL_ID UINT32_MAX
 #define LLDB_INVALID_OFFSET UINT64_MAX // Must match max of lldb::offset_t
 #define LLDB_INVALID_LINE_NUMBER UINT32_MAX
 #define LLDB_INVALID_COLUMN_NUMBER 0

diff  --git a/lldb/source/API/SBSymbol.cpp b/lldb/source/API/SBSymbol.cpp
index fd68a3820181d..bbaf074295b89 100644
--- a/lldb/source/API/SBSymbol.cpp
+++ b/lldb/source/API/SBSymbol.cpp
@@ -207,7 +207,7 @@ uint32_t SBSymbol::GetID() const {
 
   if (m_opaque_ptr)
     return m_opaque_ptr->GetID();
-  return 0;
+  return LLDB_INVALID_SYMBOL_ID;
 }
 
 bool SBSymbol::IsExternal() {


        
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to