llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-lldb

Author: nerix (Nerixyz)

<details>
<summary>Changes</summary>

This test was failing with the native plugin due to two reasons:

1. The static `C::abc` was printed as `(int) ::C::abc = 123`
2. The order of the base classes of [`C` 
(`List::Value`)](https://github.com/llvm/llvm-project/blob/b7e4edca3d56ec87f719c202f5397b245595f7cc/lldb/test/Shell/SymbolFile/PDB/Inputs/UdtLayoutTest.cpp#L30)
 is different between DIA and the native plugin. I don't know how the order in 
the DIA plugin is determined - it prints `B&lt;0&gt;`, `B&lt;1&gt;`, 
`B&lt;2&gt;`, `B&lt;3&gt;`, `A`. The native plugin follows the order of the 
bases in memory and prints `B&lt;2&gt;`, `B&lt;3&gt;`, `A`, `B&lt;0&gt;`, 
`B&lt;1&gt;` (last three are the virtual bases).
    &lt;details&gt;&lt;summary&gt;Class layout of C&lt;/summary&gt;
    
    ```
    class C size(88):
            +---
    0       | +--- (base class B&lt;2&gt;)
    0       | | {vbptr}
    8       | | _a
    9.      | | _b (bitstart=3,nbits=6)
    11      | | _c
            | +---
    15      | +--- (base class B&lt;3&gt;)
    15      | | {vbptr}
    23      | | _a
    24.     | | _b (bitstart=3,nbits=6)
    26      | | _c
            | +---
            | &lt;alignment member&gt; (size=2)
    32      | _x
    36      | _y
    38      | _z
            | &lt;alignment member&gt; (size=1)
            | &lt;alignment member&gt; (size=2)
            +---
            +--- (virtual base A)
    40      | {vfptr}
    48      | U _u
            | &lt;alignment member&gt; (size=4)
            +---
            +--- (virtual base B&lt;0&gt;)
    56      | {vbptr}
    64      | _a
    65.     | _b (bitstart=3,nbits=6)
    67      | _c
            +---
            +--- (virtual base B&lt;1&gt;)
    71      | {vbptr}
    79      | _a
    80.     | _b (bitstart=3,nbits=6)
    82      | _c
            +---
    ```
    &lt;/details&gt;

I updated the checks to permit outputs from both plugins.

---
Full diff: https://github.com/llvm/llvm-project/pull/159769.diff


1 Files Affected:

- (modified) lldb/test/Shell/SymbolFile/PDB/udt-layout.test (+59-47) 


``````````diff
diff --git a/lldb/test/Shell/SymbolFile/PDB/udt-layout.test 
b/lldb/test/Shell/SymbolFile/PDB/udt-layout.test
index bc68539e25ec1..ed943bc9fb513 100644
--- a/lldb/test/Shell/SymbolFile/PDB/udt-layout.test
+++ b/lldb/test/Shell/SymbolFile/PDB/udt-layout.test
@@ -1,51 +1,63 @@
 REQUIRES: target-windows, lld
 RUN: %build --compiler=clang-cl --output=%t.exe %S/Inputs/UdtLayoutTest.cpp
-RUN: %lldb -b -s %S/Inputs/UdtLayoutTest.script -- %t.exe | FileCheck %s
+RUN: env LLDB_USE_NATIVE_PDB_READER=0 %lldb -b -s 
%S/Inputs/UdtLayoutTest.script -- %t.exe | FileCheck %s
+RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -b -s 
%S/Inputs/UdtLayoutTest.script -- %t.exe | FileCheck %s
 
-CHECK:(int) C::abc = 123
+CHECK:(int) {{(::)?}}C::abc = 123
 CHECK:(List[16]) ls = {
-CHECK:  [15] = {
-CHECK:    Prev = nullptr
-CHECK:    Next = nullptr
-CHECK:    Value = {
-CHECK:      B<0> = {
-CHECK:        A = {
-CHECK:          _u = (_u1 = '\x02', _u2 = 2, _u3 = 2)
-CHECK:        }
-CHECK:        _a = '\x01'
-CHECK:        _b = 2
-CHECK:        _c = 3
-CHECK:      }
-CHECK:      B<1> = {
-CHECK:        A = {
-CHECK:          _u = (_u1 = '\x02', _u2 = 2, _u3 = 2)
-CHECK:        }
-CHECK:        _a = '\x02'
-CHECK:        _b = 4
-CHECK:        _c = 6
-CHECK:      }
-CHECK:      B<2> = {
-CHECK:        A = {
-CHECK:          _u = (_u1 = '\x02', _u2 = 2, _u3 = 2)
-CHECK:        }
-CHECK:        _a = '\x03'
-CHECK:        _b = 6
-CHECK:        _c = 9
-CHECK:      }
-CHECK:      B<3> = {
-CHECK:        A = {
-CHECK:          _u = (_u1 = '\x02', _u2 = 2, _u3 = 2)
-CHECK:        }
-CHECK:        _a = '\x04'
-CHECK:        _b = 8
-CHECK:        _c = 12
-CHECK:      }
-CHECK:      A = {
-CHECK:        _u = (_u1 = '\x02', _u2 = 2, _u3 = 2)
-CHECK:      }
-CHECK:      _x = 5
-CHECK:      _y = 10
-CHECK:      _z = '\x0f'
-CHECK:    }
-CHECK:  }
-CHECK:}
+
+CHECK:       [14] = {
+CHECK-NEXT:    Prev = nullptr
+CHECK-NEXT:    Next = nullptr
+CHECK-NEXT:    Value = {
+CHECK:           B<0> = {
+CHECK-NEXT:        A = {
+CHECK-NEXT:          _u = (_u1 = '\x02', _u2 = 2, _u3 = 2)
+CHECK-NEXT:        }
+CHECK-NEXT:        _a = '\x01'
+CHECK-NEXT:        _b = 2
+CHECK-NEXT:        _c = 3
+CHECK-NEXT:      }
+CHECK-NEXT:      B<1> = {
+CHECK-NEXT:        A = {
+CHECK-NEXT:          _u = (_u1 = '\x02', _u2 = 2, _u3 = 2)
+CHECK-NEXT:        }
+CHECK-NEXT:        _a = '\x02'
+CHECK-NEXT:        _b = 4
+CHECK-NEXT:        _c = 6
+CHECK-NEXT:      }
+CHECK:           _x = 5
+CHECK-NEXT:      _y = 10
+CHECK-NEXT:      _z = '\x0f'
+CHECK-NEXT:    }
+CHECK-NEXT:  }
+
+CHECK-NEXT:  [15] = {
+CHECK-NEXT:    Prev = nullptr
+CHECK-NEXT:    Next = nullptr
+CHECK-NEXT:    Value = {
+CHECK:           B<2> = {
+CHECK-NEXT:        A = {
+CHECK-NEXT:          _u = (_u1 = '\x02', _u2 = 2, _u3 = 2)
+CHECK-NEXT:        }
+CHECK-NEXT:        _a = '\x03'
+CHECK-NEXT:        _b = 6
+CHECK-NEXT:        _c = 9
+CHECK-NEXT:      }
+CHECK-NEXT:      B<3> = {
+CHECK-NEXT:        A = {
+CHECK-NEXT:          _u = (_u1 = '\x02', _u2 = 2, _u3 = 2)
+CHECK-NEXT:        }
+CHECK-NEXT:        _a = '\x04'
+CHECK-NEXT:        _b = 8
+CHECK-NEXT:        _c = 12
+CHECK-NEXT:      }
+CHECK-NEXT:      A = {
+CHECK-NEXT:        _u = (_u1 = '\x02', _u2 = 2, _u3 = 2)
+CHECK-NEXT:      }
+CHECK:           _x = 5
+CHECK-NEXT:      _y = 10
+CHECK-NEXT:      _z = '\x0f'
+CHECK-NEXT:    }
+CHECK-NEXT:  }
+CHECK-NEXT:}

``````````

</details>


https://github.com/llvm/llvm-project/pull/159769
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to