summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSean Silva <silvas@purdue.edu>2013-06-18 23:14:03 +0000
committerSean Silva <silvas@purdue.edu>2013-06-18 23:14:03 +0000
commitafcf60fe15999ea07193118f447a34f41171e433 (patch)
tree50990c3d24b6d6181abb247883b52fcfb8bcd273 /include
parentbd4bd3686d5e623514cc7564227a6fa45254c610 (diff)
downloadllvm-afcf60fe15999ea07193118f447a34f41171e433.tar.gz
llvm-afcf60fe15999ea07193118f447a34f41171e433.tar.bz2
llvm-afcf60fe15999ea07193118f447a34f41171e433.tar.xz
[yaml2obj][ELF] Rudimentary symbol table support.
Currently, we only output the name. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184255 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Object/ELFYAML.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/llvm/Object/ELFYAML.h b/include/llvm/Object/ELFYAML.h
index 04ba0a6622..d6ce525248 100644
--- a/include/llvm/Object/ELFYAML.h
+++ b/include/llvm/Object/ELFYAML.h
@@ -49,6 +49,9 @@ struct FileHeader {
ELF_EM Machine;
llvm::yaml::Hex64 Entry;
};
+struct Symbol {
+ StringRef Name;
+};
struct Section {
StringRef Name;
ELF_SHT Type;
@@ -57,6 +60,8 @@ struct Section {
object::yaml::BinaryRef Content;
StringRef Link;
llvm::yaml::Hex64 AddressAlign;
+ // For SHT_SYMTAB; should be empty otherwise.
+ std::vector<Symbol> Symbols;
};
struct Object {
FileHeader Header;
@@ -67,6 +72,7 @@ struct Object {
} // end namespace llvm
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::ELFYAML::Section)
+LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::ELFYAML::Symbol)
namespace llvm {
namespace yaml {
@@ -107,6 +113,11 @@ struct MappingTraits<ELFYAML::FileHeader> {
};
template <>
+struct MappingTraits<ELFYAML::Symbol> {
+ static void mapping(IO &IO, ELFYAML::Symbol &Symbol);
+};
+
+template <>
struct MappingTraits<ELFYAML::Section> {
static void mapping(IO &IO, ELFYAML::Section &Section);
};