LLVM
10.0.0svn
lib
ObjectYAML
XCOFFYAML.cpp
Go to the documentation of this file.
1
//===-- XCOFFYAML.cpp - XCOFF YAMLIO implementation -------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file defines classes for handling the YAML representation of XCOFF.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#include "
llvm/ObjectYAML/XCOFFYAML.h
"
14
#include "
llvm/BinaryFormat/XCOFF.h
"
15
#include <string.h>
16
17
namespace
llvm
{
18
namespace
XCOFFYAML {
19
20
Object::Object
() { memset(&
Header
, 0,
sizeof
(
Header
)); }
21
22
}
// namespace XCOFFYAML
23
24
namespace
yaml {
25
26
void
ScalarEnumerationTraits<XCOFF::StorageClass>::enumeration(
27
IO &IO,
XCOFF::StorageClass
&
Value
) {
28
#define ECase(X) IO.enumCase(Value, #X, XCOFF::X)
29
ECase
(
C_NULL
);
30
ECase
(
C_AUTO
);
31
ECase
(
C_EXT
);
32
ECase
(
C_STAT
);
33
ECase
(
C_REG
);
34
ECase
(
C_EXTDEF
);
35
ECase
(
C_LABEL
);
36
ECase
(
C_ULABEL
);
37
ECase
(
C_MOS
);
38
ECase
(
C_ARG
);
39
ECase
(
C_STRTAG
);
40
ECase
(
C_MOU
);
41
ECase
(
C_UNTAG
);
42
ECase
(
C_TPDEF
);
43
ECase
(
C_USTATIC
);
44
ECase
(
C_ENTAG
);
45
ECase
(
C_MOE
);
46
ECase
(
C_REGPARM
);
47
ECase
(
C_FIELD
);
48
ECase
(
C_BLOCK
);
49
ECase
(
C_FCN
);
50
ECase
(
C_EOS
);
51
ECase
(
C_FILE
);
52
ECase
(
C_LINE
);
53
ECase
(
C_ALIAS
);
54
ECase
(
C_HIDDEN
);
55
ECase
(
C_HIDEXT
);
56
ECase
(
C_BINCL
);
57
ECase
(
C_EINCL
);
58
ECase
(
C_INFO
);
59
ECase
(
C_WEAKEXT
);
60
ECase
(
C_DWARF
);
61
ECase
(
C_GSYM
);
62
ECase
(
C_LSYM
);
63
ECase
(
C_PSYM
);
64
ECase
(
C_RSYM
);
65
ECase
(
C_RPSYM
);
66
ECase
(
C_STSYM
);
67
ECase
(
C_TCSYM
);
68
ECase
(
C_BCOMM
);
69
ECase
(
C_ECOML
);
70
ECase
(
C_ECOMM
);
71
ECase
(
C_DECL
);
72
ECase
(
C_ENTRY
);
73
ECase
(
C_FUN
);
74
ECase
(
C_BSTAT
);
75
ECase
(
C_ESTAT
);
76
ECase
(
C_GTLS
);
77
ECase
(
C_STTLS
);
78
ECase
(
C_EFCN
);
79
#undef ECase
80
}
81
82
void
MappingTraits<XCOFFYAML::FileHeader>::mapping
(
83
IO &IO,
XCOFFYAML::FileHeader
&FileHdr) {
84
IO.mapRequired(
"MagicNumber"
, FileHdr.
Magic
);
85
IO.mapRequired(
"NumberOfSections"
, FileHdr.
NumberOfSections
);
86
IO.mapRequired(
"CreationTime"
, FileHdr.
TimeStamp
);
87
IO.mapRequired(
"OffsetToSymbolTable"
, FileHdr.
SymbolTableOffset
);
88
IO.mapRequired(
"EntriesInSymbolTable"
, FileHdr.
NumberOfSymTableEntries
);
89
IO.mapRequired(
"AuxiliaryHeaderSize"
, FileHdr.
AuxHeaderSize
);
90
IO.mapRequired(
"Flags"
, FileHdr.
Flags
);
91
}
92
93
void
MappingTraits<XCOFFYAML::Symbol>::mapping
(IO &IO,
XCOFFYAML::Symbol
&S) {
94
IO.mapRequired(
"Name"
, S.
SymbolName
);
95
IO.mapRequired(
"Value"
, S.
Value
);
96
IO.mapRequired(
"Section"
, S.
SectionName
);
97
IO.mapRequired(
"Type"
, S.
Type
);
98
IO.mapRequired(
"StorageClass"
, S.
StorageClass
);
99
IO.mapRequired(
"NumberOfAuxEntries"
, S.
NumberOfAuxEntries
);
100
}
101
102
void
MappingTraits<XCOFFYAML::Object>::mapping
(IO &IO,
XCOFFYAML::Object
&Obj) {
103
IO.mapTag(
"!XCOFF"
,
true
);
104
IO.mapRequired(
"FileHeader"
, Obj.
Header
);
105
IO.mapRequired(
"Symbols"
, Obj.
Symbols
);
106
}
107
108
}
// namespace yaml
109
}
// namespace llvm
XCOFFYAML.h
llvm::XCOFF::C_DWARF
Definition:
XCOFF.h:92
llvm::XCOFF::C_RPSYM
Definition:
XCOFF.h:98
llvm::XCOFF::C_BCOMM
Definition:
XCOFF.h:83
llvm::XCOFF::C_BSTAT
Definition:
XCOFF.h:86
llvm::XCOFF::C_EXT
Definition:
XCOFF.h:104
llvm
This class represents lattice values for constants.
Definition:
AllocatorList.h:23
llvm::XCOFFYAML::FileHeader::TimeStamp
int32_t TimeStamp
Definition:
XCOFFYAML.h:25
llvm::XCOFF::C_DECL
Definition:
XCOFF.h:114
llvm::XCOFFYAML::FileHeader::AuxHeaderSize
uint16_t AuxHeaderSize
Definition:
XCOFFYAML.h:28
llvm::XCOFF::C_LINE
Definition:
XCOFF.h:134
llvm::XCOFF::C_EXTDEF
Definition:
XCOFF.h:119
llvm::XCOFFYAML::Symbol::SymbolName
StringRef SymbolName
Definition:
XCOFFYAML.h:33
llvm::XCOFF::C_ULABEL
Definition:
XCOFF.h:121
llvm::XCOFF::C_AUTO
Definition:
XCOFF.h:117
llvm::XCOFF::C_TPDEF
Definition:
XCOFF.h:127
llvm::XCOFFYAML::FileHeader::NumberOfSymTableEntries
int32_t NumberOfSymTableEntries
Definition:
XCOFFYAML.h:27
llvm::XCOFF::C_STRTAG
Definition:
XCOFF.h:124
llvm::XCOFFYAML::FileHeader
Definition:
XCOFFYAML.h:22
llvm::XCOFF::C_UNTAG
Definition:
XCOFF.h:126
llvm::XCOFFYAML::Symbol
Definition:
XCOFFYAML.h:32
llvm::XCOFF::C_ARG
Definition:
XCOFF.h:123
llvm::XCOFF::C_GTLS
Definition:
XCOFF.h:88
XCOFF.h
llvm::XCOFF::StorageClass
StorageClass
Definition:
XCOFF.h:76
llvm::XCOFF::C_STSYM
Definition:
XCOFF.h:82
llvm::yaml::MappingTraits
Definition:
ModuleSummaryIndex.h:48
llvm::XCOFF::C_FIELD
Definition:
XCOFF.h:132
llvm::XCOFFYAML::FileHeader::NumberOfSections
uint16_t NumberOfSections
Definition:
XCOFFYAML.h:24
llvm::XCOFF::C_REGPARM
Definition:
XCOFF.h:131
llvm::XCOFFYAML::Object::Symbols
std::vector< Symbol > Symbols
Definition:
XCOFFYAML.h:43
llvm::XCOFF::C_WEAKEXT
Definition:
XCOFF.h:105
llvm::XCOFFYAML::Symbol::Type
llvm::yaml::Hex16 Type
Definition:
XCOFFYAML.h:36
llvm::XCOFF::C_BINCL
Definition:
XCOFF.h:79
llvm::XCOFF::C_ENTAG
Definition:
XCOFF.h:129
llvm::XCOFF::C_TCSYM
Definition:
XCOFF.h:140
llvm::XCOFFYAML::Object::Object
Object()
Definition:
XCOFFYAML.cpp:20
llvm::XCOFF::C_ECOMM
Definition:
XCOFF.h:84
llvm::XCOFF::C_REG
Definition:
XCOFF.h:118
llvm::XCOFF::C_EINCL
Definition:
XCOFF.h:80
llvm::XCOFF::C_PSYM
Definition:
XCOFF.h:96
llvm::XCOFFYAML::Symbol::SectionName
StringRef SectionName
Definition:
XCOFFYAML.h:35
llvm::XCOFF::C_LSYM
Definition:
XCOFF.h:95
llvm::XCOFF::C_EOS
Definition:
XCOFF.h:133
llvm::XCOFF::C_USTATIC
Definition:
XCOFF.h:128
llvm::XCOFFYAML::Object
Definition:
XCOFFYAML.h:41
llvm::XCOFF::C_ALIAS
Definition:
XCOFF.h:135
llvm::XCOFFYAML::Symbol::NumberOfAuxEntries
uint8_t NumberOfAuxEntries
Definition:
XCOFFYAML.h:38
ECase
#define ECase(X)
llvm::XCOFF::C_MOS
Definition:
XCOFF.h:122
llvm::XCOFF::C_GSYM
Definition:
XCOFF.h:81
llvm::XCOFF::C_NULL
Definition:
XCOFF.h:108
llvm::XCOFF::C_LABEL
Definition:
XCOFF.h:120
llvm::XCOFFYAML::Object::Header
FileHeader Header
Definition:
XCOFFYAML.h:42
llvm::XCOFFYAML::Symbol::StorageClass
XCOFF::StorageClass StorageClass
Definition:
XCOFFYAML.h:37
llvm::XCOFF::C_FUN
Definition:
XCOFF.h:100
llvm::XCOFF::C_BLOCK
Definition:
XCOFF.h:110
llvm::XCOFF::C_FILE
Definition:
XCOFF.h:78
llvm::XCOFF::C_STAT
Definition:
XCOFF.h:109
llvm::XCOFF::C_ESTAT
Definition:
XCOFF.h:87
llvm::XCOFF::C_MOE
Definition:
XCOFF.h:130
llvm::Value
LLVM Value Representation.
Definition:
Value.h:74
llvm::XCOFF::C_EFCN
Definition:
XCOFF.h:137
llvm::XCOFFYAML::FileHeader::SymbolTableOffset
llvm::yaml::Hex32 SymbolTableOffset
Definition:
XCOFFYAML.h:26
llvm::XCOFFYAML::FileHeader::Flags
llvm::yaml::Hex16 Flags
Definition:
XCOFFYAML.h:29
llvm::XCOFF::C_RSYM
Definition:
XCOFF.h:97
llvm::XCOFF::C_FCN
Definition:
XCOFF.h:111
llvm::XCOFF::C_HIDDEN
Definition:
XCOFF.h:136
llvm::XCOFF::C_ECOML
Definition:
XCOFF.h:99
llvm::XCOFF::C_ENTRY
Definition:
XCOFF.h:85
llvm::XCOFF::C_HIDEXT
Definition:
XCOFF.h:112
llvm::XCOFF::C_MOU
Definition:
XCOFF.h:125
llvm::XCOFF::C_INFO
Definition:
XCOFF.h:113
llvm::XCOFFYAML::FileHeader::Magic
llvm::yaml::Hex16 Magic
Definition:
XCOFFYAML.h:23
llvm::XCOFF::C_STTLS
Definition:
XCOFF.h:89
llvm::XCOFFYAML::Symbol::Value
llvm::yaml::Hex32 Value
Definition:
XCOFFYAML.h:34
Generated on Mon Nov 4 2019 00:36:57 for LLVM by
1.8.13