From 9062ab943fe55fddb5af389421f3293f20dd3ba5 Mon Sep 17 00:00:00 2001 From: Chris Bieneman Date: Thu, 12 May 2016 16:04:16 +0000 Subject: [ObjectYAML] Support Thin MachO headers to YAML This patch adds support to ObjectYAML for serializing mach_header structs. llvm-svn: 269303 --- llvm/lib/ObjectYAML/MachOYAML.cpp | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 llvm/lib/ObjectYAML/MachOYAML.cpp (limited to 'llvm/lib/ObjectYAML/MachOYAML.cpp') diff --git a/llvm/lib/ObjectYAML/MachOYAML.cpp b/llvm/lib/ObjectYAML/MachOYAML.cpp new file mode 100644 index 00000000000..91d9583c98e --- /dev/null +++ b/llvm/lib/ObjectYAML/MachOYAML.cpp @@ -0,0 +1,44 @@ +//===- MachOYAML.cpp - MachO YAMLIO implementation ------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file defines classes for handling the YAML representation of MachO. +// +//===----------------------------------------------------------------------===// + +#include "llvm/ObjectYAML/MachOYAML.h" +#include "llvm/Support/Casting.h" + +namespace llvm { + +namespace yaml { + +void MappingTraits::mapping( + IO &IO, MachOYAML::FileHeader &FileHdr) { + IO.mapRequired("cputype", FileHdr.cputype); + IO.mapRequired("cpusubtype", FileHdr.cpusubtype); + IO.mapOptional("filetype", FileHdr.filetype); + IO.mapRequired("ncmds", FileHdr.ncmds); + IO.mapRequired("flags", FileHdr.flags); +} + +void MappingTraits::mapping(IO &IO, + MachOYAML::Object &Object) { + // If the context isn't already set, tag the document as !mach-o. + // For Fat files there will be a different tag so they can be differentiated. + if(!IO.getContext()) { + IO.setContext(&Object); + IO.mapTag("!mach-o", true); + } + IO.mapRequired("FileHeader", Object.Header); + IO.setContext(nullptr); +} + +} // namespace llvm::yaml + +} // namespace llvm -- cgit v1.2.3