[llvm] [llvm-objdump][AVR] Detect AVR architecture from ELF flags for disassembling (PR #174731)

James Henderson via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 27 01:19:45 PST 2026


================
@@ -2696,12 +2696,16 @@ static void disassembleObject(ObjectFile *Obj, bool InlineRelocs,
     // silent failures.
     if (const auto *Elf = dyn_cast<ELFObjectFileBase>(Obj)) {
       unsigned AVRVersion = Elf->getPlatformFlags() & ELF::EF_AVR_ARCH_MASK;
-      std::string Version = AVR::getFeatureSetForEFlag(AVRVersion);
-      if (Version == "avr0")
-        reportWarning("unknown AVR EFlags value: " + toHex(AVRVersion) +
-                          ", defaulting to avr0",
+      if (Expected<std::string> VersionOrErr =
+              AVR::getFeatureSetFromEFlag(AVRVersion)) {
+        Features.AddFeature('+' + *VersionOrErr);
+      } else {
+        reportWarning("unknown AVR EFlags value: 0x" +
+                          Twine::utohexstr(AVRVersion) + ", defaulting to avr0",
                       Obj->getFileName());
-      Features.AddFeature('+' + Version);
+        consumeError(VersionOrErr.takeError());
----------------
jh7370 wrote:

The whole point of passing the Error back from the lower function is that you use the information in that error in the `reportWarning` call, possibly via `toString` or similar.

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


More information about the llvm-commits mailing list