[Lldb-commits] [lldb] [RISCV-LLDB] RISCV feature attribute support and allows overriding additional(default) feature (PR #147990)

David Spickett via lldb-commits lldb-commits at lists.llvm.org
Mon Sep 8 06:18:12 PDT 2025


================
@@ -1446,6 +1446,33 @@ bool DisassemblerLLVMC::MCDisasmInstance::IsAuthenticated(
   return InstrDesc.isAuthenticated() || IsBrkC47x;
 }
 
+void DisassemblerLLVMC::UpdateFeatureString(llvm::StringRef additional_features,
+                                            std::string &features) {
+  // Allow users to override default additional features.
+  for (llvm::StringRef flag : llvm::split(additional_features, ",")) {
+    flag = flag.trim();
+    if (flag.empty())
+      continue;
+    // By default, if both +flag and -flag are present in the feature string,
+    // disassembler keeps the feature enabled (+flag).
+    // To respect user intent, we make -flag(user) take priority over the
+    // default +flag coming from ELF.
+    bool add_flag = true;
+    if (flag.starts_with('+')) {
+      std::string disable_flag = "-" + flag.substr(1).str();
+      if (features.find(disable_flag) != std::string::npos) {
+        add_flag = false;
+      }
----------------
DavidSpickett wrote:

add_flag = features.find(disable_flag) == std::string::npos;

https://github.com/llvm/llvm-project/pull/147990


More information about the lldb-commits mailing list