[Lldb-commits] [lldb] 8c122e5 - [lldb][test] Make Linux cpuinfo check more robust (#160675)

via lldb-commits lldb-commits at lists.llvm.org
Fri Sep 26 01:33:53 PDT 2025


Author: David Spickett
Date: 2025-09-26T08:33:50Z
New Revision: 8c122e5d3bcbdd82c34a406c6d3029060306521a

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

LOG: [lldb][test] Make Linux cpuinfo check more robust (#160675)

We were looking for any mention of the feature name in cpuinfo, which
could have hit anything including features with common prefixes like
sme, sme2, smefa64.

Luckily this was not a problem but I'm changing this to find the
features line and split the features into a list. Then we are only
looking for exact matches.

Here's the information for one core as an example:
```
processor	: 7
BogoMIPS	: 200.00
Features	: fp asimd evtstrm crc32 atomics fphp asimdhp cpuid <...>
CPU implementer	: 0x41
CPU architecture: 8
CPU variant	: 0x0
CPU part	: 0xd0f
CPU revision	: 0
```
(and to avoid any doubt, this is from a CPU simulated in Arm's FVP, it's
not real)

Note that the layout of the label, colon, values is sometimes aligned
but not always. So I trim whitespace a few times to normalise that.

This repeats once for each core so we only need to find one features
line.

Added: 
    

Modified: 
    lldb/packages/Python/lldbsuite/test/cpu_feature.py

Removed: 
    


################################################################################
diff  --git a/lldb/packages/Python/lldbsuite/test/cpu_feature.py b/lldb/packages/Python/lldbsuite/test/cpu_feature.py
index 3f43cbba130c0..b46a5acc596f0 100644
--- a/lldb/packages/Python/lldbsuite/test/cpu_feature.py
+++ b/lldb/packages/Python/lldbsuite/test/cpu_feature.py
@@ -39,9 +39,13 @@ def _is_supported_linux(self, cmd_runner):
         if err.Fail() or retcode != 0:
             return output, False
 
-        # FIXME: simple substring match, e.g., test for 'sme' will be true if
-        # 'sme2' or 'smefa64' is present
-        return None, (self.cpu_info_flag in output)
+        # Assume that every processor presents the same features.
+        # Look for the first "Features: ...." line. Features are space separated.
+        if m := re.search(r"Features\s*: (.*)\n", output):
+            features = m.group(1).split()
+            return None, (self.cpu_info_flag in features)
+
+        return 'No "Features:" line found in /proc/cpuinfo', False
 
     def _is_supported_darwin(self, cmd_runner):
         if not self.sysctl_key:


        


More information about the lldb-commits mailing list