From f88f46358dbffa20af3b054a9346e5154789d50f Mon Sep 17 00:00:00 2001 From: Cyndy Ishida Date: Wed, 11 Sep 2019 00:00:53 +0000 Subject: [llvm-nm] Add tapi file support Summary: This commit is the final one for adding tapi support to the llvm-nm implementation. This commit also has accompanying tests the additions to lib/Object Reviewers: ributzka, steven_wu Reviewed By: ributzka Subscribers: hiraditya, plotfi, dexonsmith, rupprecht, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D66160 llvm-svn: 371576 --- llvm/lib/TextAPI/MachO/Architecture.cpp | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'llvm/lib/TextAPI/MachO/Architecture.cpp') diff --git a/llvm/lib/TextAPI/MachO/Architecture.cpp b/llvm/lib/TextAPI/MachO/Architecture.cpp index a66a982..4d55c99 100644 --- a/llvm/lib/TextAPI/MachO/Architecture.cpp +++ b/llvm/lib/TextAPI/MachO/Architecture.cpp @@ -11,6 +11,7 @@ //===----------------------------------------------------------------------===// #include "llvm/TextAPI/MachO/Architecture.h" +#include "llvm/TextAPI/MachO/ArchitectureSet.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/BinaryFormat/MachO.h" @@ -18,7 +19,7 @@ namespace llvm { namespace MachO { Architecture getArchitectureFromCpuType(uint32_t CPUType, uint32_t CPUSubType) { -#define ARCHINFO(Arch, Type, Subtype) \ +#define ARCHINFO(Arch, Type, Subtype, NumBits) \ if (CPUType == (Type) && \ (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) == (Subtype)) \ return AK_##Arch; @@ -30,7 +31,7 @@ Architecture getArchitectureFromCpuType(uint32_t CPUType, uint32_t CPUSubType) { Architecture getArchitectureFromName(StringRef Name) { return StringSwitch(Name) -#define ARCHINFO(Arch, Type, Subtype) .Case(#Arch, AK_##Arch) +#define ARCHINFO(Arch, Type, Subtype, NumBits) .Case(#Arch, AK_##Arch) #include "llvm/TextAPI/MachO/Architecture.def" #undef ARCHINFO .Default(AK_unknown); @@ -38,7 +39,7 @@ Architecture getArchitectureFromName(StringRef Name) { StringRef getArchitectureName(Architecture Arch) { switch (Arch) { -#define ARCHINFO(Arch, Type, Subtype) \ +#define ARCHINFO(Arch, Type, Subtype, NumBits) \ case AK_##Arch: \ return #Arch; #include "llvm/TextAPI/MachO/Architecture.def" @@ -54,7 +55,7 @@ StringRef getArchitectureName(Architecture Arch) { std::pair getCPUTypeFromArchitecture(Architecture Arch) { switch (Arch) { -#define ARCHINFO(Arch, Type, Subtype) \ +#define ARCHINFO(Arch, Type, Subtype, NumBits) \ case AK_##Arch: \ return std::make_pair(Type, Subtype); #include "llvm/TextAPI/MachO/Architecture.def" @@ -68,6 +69,22 @@ std::pair getCPUTypeFromArchitecture(Architecture Arch) { return std::make_pair(0, 0); } +bool is64Bit(Architecture Arch) { + switch (Arch) { +#define ARCHINFO(Arch, Type, Subtype, NumBits) \ + case AK_##Arch: \ + return NumBits == 64; +#include "llvm/TextAPI/MachO/Architecture.def" +#undef ARCHINFO + case AK_unknown: + return false; + } + + // Appease some compilers that cannot figure out that this is a fully covered + // switch statement. + return false; +} + raw_ostream &operator<<(raw_ostream &OS, Architecture Arch) { OS << getArchitectureName(Arch); return OS; -- cgit v1.1