summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Object
diff options
context:
space:
mode:
authorDaniel Sanders <daniel.sanders@imgtec.com>2014-03-31 09:44:05 +0000
committerDaniel Sanders <daniel.sanders@imgtec.com>2014-03-31 09:44:05 +0000
commit9cf3d3b764043bb0a7a274b3a9f0aa2a09f2aaa1 (patch)
treef3618c05f9c5b82e976c034b1e5112653708ae93 /llvm/lib/Object
parentae43aae96a82bc2c69c569cb3e7f4f02f4c04955 (diff)
downloadbcm5719-llvm-9cf3d3b764043bb0a7a274b3a9f0aa2a09f2aaa1.tar.gz
bcm5719-llvm-9cf3d3b764043bb0a7a274b3a9f0aa2a09f2aaa1.zip
[yaml2obj] Add support for ELF e_flags.
Summary: The FileHeader mapping now accepts an optional Flags sequence that accepts the EF_<arch>_<flag> constants. When not given, Flags defaults to zero. Reviewers: atanasyan Reviewed By: atanasyan CC: llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D3213 llvm-svn: 205173
Diffstat (limited to 'llvm/lib/Object')
-rw-r--r--llvm/lib/Object/ELFYAML.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/llvm/lib/Object/ELFYAML.cpp b/llvm/lib/Object/ELFYAML.cpp
index 2f35cf9b103..d51367026a6 100644
--- a/llvm/lib/Object/ELFYAML.cpp
+++ b/llvm/lib/Object/ELFYAML.cpp
@@ -237,6 +237,48 @@ void ScalarEnumerationTraits<ELFYAML::ELF_ELFOSABI>::enumeration(
#undef ECase
}
+void ScalarBitSetTraits<ELFYAML::ELF_EF>::bitset(IO &IO,
+ ELFYAML::ELF_EF &Value) {
+#define BCase(X) IO.bitSetCase(Value, #X, ELF::X);
+ BCase(EF_ARM_SOFT_FLOAT)
+ BCase(EF_ARM_VFP_FLOAT)
+ BCase(EF_ARM_EABI_UNKNOWN)
+ BCase(EF_ARM_EABI_VER1)
+ BCase(EF_ARM_EABI_VER2)
+ BCase(EF_ARM_EABI_VER3)
+ BCase(EF_ARM_EABI_VER4)
+ BCase(EF_ARM_EABI_VER5)
+ BCase(EF_ARM_EABIMASK)
+ BCase(EF_MIPS_NOREORDER)
+ BCase(EF_MIPS_PIC)
+ BCase(EF_MIPS_CPIC)
+ BCase(EF_MIPS_ABI2)
+ BCase(EF_MIPS_32BITMODE)
+ BCase(EF_MIPS_ABI_O32)
+ BCase(EF_MIPS_MICROMIPS)
+ BCase(EF_MIPS_ARCH_ASE_M16)
+ BCase(EF_MIPS_ARCH_1)
+ BCase(EF_MIPS_ARCH_2)
+ BCase(EF_MIPS_ARCH_3)
+ BCase(EF_MIPS_ARCH_4)
+ BCase(EF_MIPS_ARCH_5)
+ BCase(EF_MIPS_ARCH_32)
+ BCase(EF_MIPS_ARCH_64)
+ BCase(EF_MIPS_ARCH_32R2)
+ BCase(EF_MIPS_ARCH_64R2)
+ BCase(EF_MIPS_ARCH)
+ BCase(EF_HEXAGON_MACH_V2)
+ BCase(EF_HEXAGON_MACH_V3)
+ BCase(EF_HEXAGON_MACH_V4)
+ BCase(EF_HEXAGON_MACH_V5)
+ BCase(EF_HEXAGON_ISA_MACH)
+ BCase(EF_HEXAGON_ISA_V2)
+ BCase(EF_HEXAGON_ISA_V3)
+ BCase(EF_HEXAGON_ISA_V4)
+ BCase(EF_HEXAGON_ISA_V5)
+#undef BCase
+}
+
void ScalarEnumerationTraits<ELFYAML::ELF_SHT>::enumeration(
IO &IO, ELFYAML::ELF_SHT &Value) {
#define ECase(X) IO.enumCase(Value, #X, ELF::X);
@@ -299,6 +341,7 @@ void MappingTraits<ELFYAML::FileHeader>::mapping(IO &IO,
IO.mapOptional("OSABI", FileHdr.OSABI, ELFYAML::ELF_ELFOSABI(0));
IO.mapRequired("Type", FileHdr.Type);
IO.mapRequired("Machine", FileHdr.Machine);
+ IO.mapOptional("Flags", FileHdr.Flags, ELFYAML::ELF_EF(0));
IO.mapOptional("Entry", FileHdr.Entry, Hex64(0));
}
OpenPOWER on IntegriCloud