Author: Henrik G. Olsson
Date: 2026-02-06T10:14:19-08:00
New Revision: 1a018babf17e58f9f1179e79aac803d5a85cf668

URL: 
https://github.com/llvm/llvm-project/commit/1a018babf17e58f9f1179e79aac803d5a85cf668
DIFF: 
https://github.com/llvm/llvm-project/commit/1a018babf17e58f9f1179e79aac803d5a85cf668.diff

LOG: Revert "[llvm-objdump][AVR] Detect AVR architecture from ELF flags for 
disass…"

This reverts commit d005cb2953bd7346ce042e11bf583923ffc36713.

Added: 
    

Modified: 
    llvm/include/llvm/TargetParser/Triple.h
    llvm/lib/TargetParser/CMakeLists.txt
    llvm/tools/llvm-objdump/llvm-objdump.cpp

Removed: 
    llvm/include/llvm/TargetParser/AVRTargetParser.h
    llvm/lib/TargetParser/AVRTargetParser.cpp
    llvm/test/tools/llvm-objdump/ELF/AVR/lit.local.cfg
    llvm/test/tools/llvm-objdump/ELF/AVR/mattr.test


################################################################################
diff  --git a/llvm/include/llvm/TargetParser/AVRTargetParser.h 
b/llvm/include/llvm/TargetParser/AVRTargetParser.h
deleted file mode 100644
index 674c02f7d02d6..0000000000000
--- a/llvm/include/llvm/TargetParser/AVRTargetParser.h
+++ /dev/null
@@ -1,30 +0,0 @@
-//===-- AVRTargetParser - Parser for AVR target features 
------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-///
-/// \file
-/// This file implements a target parser to recognise AVR hardware features.
-///
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_TARGETPARSER_AVRTARGETPARSER_H
-#define LLVM_TARGETPARSER_AVRTARGETPARSER_H
-
-#include "llvm/ADT/StringRef.h"
-#include "llvm/Object/ELFObjectFile.h"
-#include "llvm/Support/Error.h"
-#include <string>
-
-namespace llvm {
-namespace AVR {
-
-LLVM_ABI Expected<std::string>
-getFeatureSetFromEFlag(const object::ELFObjectFileBase *Elf);
-
-} // namespace AVR
-} // namespace llvm
-#endif

diff  --git a/llvm/include/llvm/TargetParser/Triple.h 
b/llvm/include/llvm/TargetParser/Triple.h
index b082ed05d8358..afbf464310a8d 100644
--- a/llvm/include/llvm/TargetParser/Triple.h
+++ b/llvm/include/llvm/TargetParser/Triple.h
@@ -1058,8 +1058,6 @@ class Triple {
                : PointerWidth == 64;
   }
 
-  bool isAVR() const { return getArch() == Triple::avr; }
-
   /// Tests whether the target is 32-bit LoongArch.
   bool isLoongArch32() const { return getArch() == Triple::loongarch32; }
 

diff  --git a/llvm/lib/TargetParser/AVRTargetParser.cpp 
b/llvm/lib/TargetParser/AVRTargetParser.cpp
deleted file mode 100644
index d319826aa8ca7..0000000000000
--- a/llvm/lib/TargetParser/AVRTargetParser.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-//===-- AVRTargetParser - Parser for AVR target features 
------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-///
-/// \file
-/// This file implements a target parser to recognise AVR hardware features.
-///
-//===----------------------------------------------------------------------===//
-
-#include "llvm/TargetParser/AVRTargetParser.h"
-#include "llvm/BinaryFormat/ELF.h"
-#include "llvm/Support/Errc.h"
-
-using namespace llvm;
-
-Expected<std::string>
-AVR::getFeatureSetFromEFlag(const object::ELFObjectFileBase *Elf) {
-  static const DenseMap<unsigned, StringRef> EFlagToFeatureSet = {
-      {ELF::EF_AVR_ARCH_AVR1, "avr1"},
-      {ELF::EF_AVR_ARCH_AVR2, "avr2"},
-      {ELF::EF_AVR_ARCH_AVR25, "avr25"},
-      {ELF::EF_AVR_ARCH_AVR3, "avr3"},
-      {ELF::EF_AVR_ARCH_AVR31, "avr31"},
-      {ELF::EF_AVR_ARCH_AVR35, "avr35"},
-      {ELF::EF_AVR_ARCH_AVR4, "avr4"},
-      {ELF::EF_AVR_ARCH_AVR5, "avr5"},
-      {ELF::EF_AVR_ARCH_AVR51, "avr51"},
-      {ELF::EF_AVR_ARCH_AVR6, "avr6"},
-      {ELF::EF_AVR_ARCH_AVRTINY, "avrtiny"},
-      {ELF::EF_AVR_ARCH_XMEGA1, "xmega1"},
-      {ELF::EF_AVR_ARCH_XMEGA2, "xmega2"},
-      {ELF::EF_AVR_ARCH_XMEGA3, "xmega3"},
-      {ELF::EF_AVR_ARCH_XMEGA4, "xmega4"},
-      {ELF::EF_AVR_ARCH_XMEGA5, "xmega"},
-      {ELF::EF_AVR_ARCH_XMEGA6, "xmega"},
-      {ELF::EF_AVR_ARCH_XMEGA7, "xmega"},
-  };
-  unsigned EFlag = Elf->getPlatformFlags() & ELF::EF_AVR_ARCH_MASK;
-  auto It = EFlagToFeatureSet.find(EFlag);
-  if (It != EFlagToFeatureSet.end())
-    return It->second.str();
-
-  return createStringError(errc::invalid_argument,
-                           "unrecognised AVR version, 0x" +
-                               Twine::utohexstr(EFlag));
-}

diff  --git a/llvm/lib/TargetParser/CMakeLists.txt 
b/llvm/lib/TargetParser/CMakeLists.txt
index 8d474497f5308..e1a30199e1ade 100644
--- a/llvm/lib/TargetParser/CMakeLists.txt
+++ b/llvm/lib/TargetParser/CMakeLists.txt
@@ -17,7 +17,6 @@ add_llvm_component_library(LLVMTargetParser
   AArch64TargetParser.cpp
   ARMTargetParserCommon.cpp
   ARMTargetParser.cpp
-  AVRTargetParser.cpp
   CSKYTargetParser.cpp
   Host.cpp
   LoongArchTargetParser.cpp

diff  --git a/llvm/test/tools/llvm-objdump/ELF/AVR/lit.local.cfg 
b/llvm/test/tools/llvm-objdump/ELF/AVR/lit.local.cfg
deleted file mode 100644
index 1724fb233c169..0000000000000
--- a/llvm/test/tools/llvm-objdump/ELF/AVR/lit.local.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-if not "AVR" in config.root.targets:
-    config.unsupported = True

diff  --git a/llvm/test/tools/llvm-objdump/ELF/AVR/mattr.test 
b/llvm/test/tools/llvm-objdump/ELF/AVR/mattr.test
deleted file mode 100644
index 40b8f34bb6767..0000000000000
--- a/llvm/test/tools/llvm-objdump/ELF/AVR/mattr.test
+++ /dev/null
@@ -1,55 +0,0 @@
-## When --mattr and --mcpu are both empty, disassemble ELF with e_flags 
derived feature.
-# RUN: yaml2obj -DARCH_ARCHVERSION=EF_AVR_ARCH_AVR1 %s -o %t.avr1
-# RUN: llvm-objdump -d %t.avr1 | FileCheck %s --check-prefix=AVR1
-# RUN: yaml2obj -DARCH_ARCHVERSION=EF_AVR_ARCH_AVR3 %s -o %t.avr3
-# RUN: llvm-objdump -d %t.avr3 | FileCheck %s --check-prefix=ALL
-
-## The mask is being correctly applied before the version is determined.
-# RUN: yaml2obj -DARCH_ARCHVERSION='EF_AVR_ARCH_AVR3, 
EF_AVR_LINKRELAX_PREPARED' %s -o %t.multiflag
-# RUN: llvm-objdump -d %t.multiflag | FileCheck %s --check-prefix=ALL
-
-## If --mattr or --mcpu is specified, don't default to the file's e_flags 
derived feature.
-# RUN: llvm-objdump -d --mattr=+avr3 %t.avr1 | FileCheck %s --check-prefix=ALL
-# RUN: llvm-objdump -d --mcpu=avr3 %t.avr1 | FileCheck %s --check-prefix=ALL
-# RUN: llvm-objdump -d --mattr=+avr1 %t.avr3 | FileCheck %s --check-prefix=AVR1
-# RUN: llvm-objdump -d --mcpu=avr1 %t.avr3 | FileCheck %s --check-prefix=AVR1
-
-## If the file's e_flags doesn't representing an AVR version, default to 
"avr0".
-# RUN: yaml2obj -DARCH_ARCHVERSION=EF_AVR_LINKRELAX_PREPARED %s -o 
%t.noarchversion
-# RUN: llvm-objdump -d %t.noarchversion 2>&1 | FileCheck 
-DFILE=%t.noarchversion -DVERSION=0x0 %s --check-prefixes=AVR0,INVALIDARCHINFO
-
-## If file's e_flags is unrecognised, default to "avr0".
-# RUN: yaml2obj -DARCH_ARCHVERSION='EF_AVR_ARCH_AVR1, EF_AVR_ARCH_AVR6' %s -o 
%t.invalid
-# RUN: llvm-objdump -d %t.invalid 2>&1 | FileCheck -DFILE=%t.invalid 
-DVERSION=0x7 %s --check-prefixes=AVR0,INVALIDARCHINFO
-
-# AVR1:         <_start>:
-# AVR1-COUNT-2:  <unknown>
-# AVR1-NEXT:     lpm
-# AVR1-NEXT:     rjmp    .-2
-
-# ALL:      <_start>:
-# ALL-NEXT:   call    0x0
-# ALL-NEXT:   jmp     0x0
-# ALL-NEXT:   lpm
-# ALL-NEXT:   rjmp    .-2
-
-# INVALIDARCHINFO: warning: '[[FILE]]': unrecognised AVR version, [[VERSION]]: 
defaulting to avr0
-# AVR0:         <_start>:
-# AVR0-COUNT-3:   <unknown>
-
---- !ELF
-FileHeader:
-  Class:   ELFCLASS32
-  Data:    ELFDATA2LSB
-  Type:    ET_EXEC
-  Machine: EM_AVR
-  Flags:   [ [[ARCH_ARCHVERSION]] ]
-Sections:
-  - Name:    .text
-    Type:    SHT_PROGBITS
-    Flags:   [ SHF_ALLOC, SHF_EXECINSTR ]
-    Content: 0E9400000C940000C895FFCF
-Symbols:
-  - Name:    _start
-    Section: .text
-    Binding: STB_GLOBAL

diff  --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp 
b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index 15e292a39fe60..aebe33eddfbe9 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -73,7 +73,6 @@
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/WithColor.h"
 #include "llvm/Support/raw_ostream.h"
-#include "llvm/TargetParser/AVRTargetParser.h"
 #include "llvm/TargetParser/Host.h"
 #include "llvm/TargetParser/Triple.h"
 #include <algorithm>
@@ -2684,21 +2683,6 @@ static void disassembleObject(ObjectFile *Obj, bool 
InlineRelocs,
       Features.AddFeature(MAttrs[I]);
   } else if (MCPU.empty() && Obj->makeTriple().isAArch64()) {
     Features.AddFeature("+all");
-  } else if (MCPU.empty() && Obj->makeTriple().isAVR()) {
-    if (const auto *Elf = dyn_cast<ELFObjectFileBase>(Obj)) {
-      if (Expected<std::string> VersionOrErr =
-              AVR::getFeatureSetFromEFlag(Elf)) {
-        Features.AddFeature('+' + *VersionOrErr);
-      } else {
-        // If the architecture version cannot be determined from ELF flags,
-        // fall back to the baseline "avr0" ISA. The AVR disassembler
-        // requires a valid feature specification to function correctly.
-        reportWarning(toString(VersionOrErr.takeError()) +
-                          ": defaulting to avr0",
-                      Obj->getFileName());
-        Features.AddFeature("+avr0");
-      }
-    }
   }
 
   if (MCPU.empty())


        
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to