[Lldb-commits] [PATCH] D99827: Clarifying the documentation for variable formatting wrt to qualifiers and adding a test that demonstrates this

Shafik Yaghmour via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Fri Apr 2 18:25:51 PDT 2021


shafik created this revision.
shafik added reviewers: jingham, jasonmolenda, aprantl.
shafik requested review of this revision.

When looking up user specified formatters qualifiers are removed from types before matching, I have added a clarifying example to the document and added an example to a relevant test to demonstrate this behavior.


https://reviews.llvm.org/D99827

Files:
  lldb/docs/use/variable.rst
  lldb/test/API/functionalities/data-formatter/data-formatter-advanced/TestDataFormatterAdv.py
  lldb/test/API/functionalities/data-formatter/data-formatter-advanced/main.cpp


Index: lldb/test/API/functionalities/data-formatter/data-formatter-advanced/main.cpp
===================================================================
--- lldb/test/API/functionalities/data-formatter/data-formatter-advanced/main.cpp
+++ lldb/test/API/functionalities/data-formatter/data-formatter-advanced/main.cpp
@@ -128,6 +128,9 @@
 {
     
     int iAmInt = 9;
+    const int constInt = 42;
+    volatile int volatileInt = 43;
+    const volatile int constVolatileInt = 44;
     
     i_am_cool cool_boy(1,0.5,3);
     i_am_cooler cooler_boy(1,2,0.1,0.2,'A','B');
Index: lldb/test/API/functionalities/data-formatter/data-formatter-advanced/TestDataFormatterAdv.py
===================================================================
--- lldb/test/API/functionalities/data-formatter/data-formatter-advanced/TestDataFormatterAdv.py
+++ lldb/test/API/functionalities/data-formatter/data-formatter-advanced/TestDataFormatterAdv.py
@@ -244,6 +244,15 @@
         self.expect("frame variable a_simple_object", matching=True,
                     substrs=['x=0x00000003'])
 
+        self.expect("frame variable constInt", matching=True,
+                    substrs=['constInt = 0x0000002a'])
+
+        self.expect("frame variable volatileInt", matching=True,
+                    substrs=['volatileInt = 0x0000002b'])
+
+        self.expect("frame variable constVolatileInt", matching=True,
+                    substrs=['constVolatileInt = 0x0000002c'])
+
         # check that we can correctly cap the number of children shown
         self.runCmd("settings set target.max-children-count 5")
 
Index: lldb/docs/use/variable.rst
===================================================================
--- lldb/docs/use/variable.rst
+++ lldb/docs/use/variable.rst
@@ -131,6 +131,20 @@
    (C) c = {0x03 0x00 0x00 0x00}
    (D) d = 4
 
+Note, that qualifiers such as const and volatile will be stripped when matching types for example:
+
+::
+
+   (lldb) frame var x y z
+   (int) x = 1
+   (const int) y = 2
+   (volatile int) z = 4
+   (lldb) type format add -f hex int
+   (lldb) frame var x y z
+   (int) x = 0x00000001
+   (const int) y = 0x00000002
+   (volatile int) z = 0x00000004
+
 Two additional options that you will want to look at are --skip-pointers (-p)
 and --skip-references (-r). These two options prevent LLDB from applying a
 format for type T to values of type T* and T& respectively.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D99827.335054.patch
Type: text/x-patch
Size: 2402 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20210403/d601dea7/attachment.bin>


More information about the lldb-commits mailing list