llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: David Spickett (DavidSpickett) <details> <summary>Changes</summary> 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. --- Full diff: https://github.com/llvm/llvm-project/pull/160675.diff 1 Files Affected: - (modified) lldb/packages/Python/lldbsuite/test/cpu_feature.py (+10-3) ``````````diff diff --git a/lldb/packages/Python/lldbsuite/test/cpu_feature.py b/lldb/packages/Python/lldbsuite/test/cpu_feature.py index 3f43cbba130c0..9cdf46d688dd1 100644 --- a/lldb/packages/Python/lldbsuite/test/cpu_feature.py +++ b/lldb/packages/Python/lldbsuite/test/cpu_feature.py @@ -39,9 +39,16 @@ 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. + for line in output.splitlines(): + line = line.strip() + if line.startswith("Features"): + # Feature names are space separated. + features = line.split(":")[1].strip().split() + return None, (self.cpu_info_flag in features) + + return f'No "Features:" line found in /proc/cpuinfo', False def _is_supported_darwin(self, cmd_runner): if not self.sysctl_key: `````````` </details> https://github.com/llvm/llvm-project/pull/160675 _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
