[PATCH] D66539: [ELF][ARM] Simplify some llvm-objdump tests with both ARM/Thumb states

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 21 08:21:48 PDT 2019


MaskRay added a comment.

How can we fix the MCInstrAnalysis problem? Shall we (a) have two MCInstrAnalysis (how) or (b) pass an extra parameter to evaluateBranch?

In tools/llvm-objdump/llvm-objdump.cpp

  if (MIA && (MIA->isCall(Inst) || MIA->isUnconditionalBranch(Inst) ||
              MIA->isConditionalBranch(Inst))) {
    uint64_t Target;
    if (MIA->evaluateBranch(Inst, SectionAddr + Index, Size, Target)) {  // We know the current ARM/Thumb state but MIT is decided by -triple=

For MCSubtargetInfo and MCDisassembler, we can obtain the secondary one with:

  if (isArmElf(Obj) && !STI->checkFeatures("+mclass")) {
    if (STI->checkFeatures("+thumb-mode"))
      Features.AddFeature("-thumb-mode");
    else
      Features.AddFeature("+thumb-mode");
    SecondarySTI.reset(TheTarget->createMCSubtargetInfo(TripleName, MCPU,
                                                        Features.getString()));
    SecondaryDisAsm.reset(TheTarget->createMCDisassembler(*SecondarySTI, Ctx));
  }
  
  std::unique_ptr<const MCInstrAnalysis> MIA(          /////////// fixed
      TheTarget->createMCInstrAnalysis(MII.get()));


Repository:
  rLLD LLVM Linker

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D66539/new/

https://reviews.llvm.org/D66539





More information about the llvm-commits mailing list