summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Object/ELFYAML.cpp
diff options
context:
space:
mode:
authorSean Silva <silvas@purdue.edu>2013-06-21 00:27:50 +0000
committerSean Silva <silvas@purdue.edu>2013-06-21 00:27:50 +0000
commitaff5125f88c6cb31d3d6b19a06ae4178e3ae6e13 (patch)
tree0ed5756ace8835ae6e398119433a9d1c36147a57 /llvm/lib/Object/ELFYAML.cpp
parent6c92b1fc3db6d7598c3fc70a6ebd5715751ed60e (diff)
downloadbcm5719-llvm-aff5125f88c6cb31d3d6b19a06ae4178e3ae6e13.tar.gz
bcm5719-llvm-aff5125f88c6cb31d3d6b19a06ae4178e3ae6e13.zip
[yaml2obj][ELF] Don't explicitly set `Binding` with STB_*
Instead, just have 3 sub-lists, one for each of {STB_LOCAL,STB_GLOBAL,STB_WEAK}. This allows us to be a lot more explicit w.r.t. the symbol ordering in the object file, because if we allowed explicitly setting the STB_* `Binding` key for the symbol, then we might have ended up having to shuffle STB_LOCAL symbols to the front of the list, which is likely to cause confusion and potential for error. Also, this new approach is simpler ;) llvm-svn: 184506
Diffstat (limited to 'llvm/lib/Object/ELFYAML.cpp')
-rw-r--r--llvm/lib/Object/ELFYAML.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/llvm/lib/Object/ELFYAML.cpp b/llvm/lib/Object/ELFYAML.cpp
index 7fa775633ab..107333c708e 100644
--- a/llvm/lib/Object/ELFYAML.cpp
+++ b/llvm/lib/Object/ELFYAML.cpp
@@ -278,15 +278,6 @@ void ScalarBitSetTraits<ELFYAML::ELF_SHF>::bitset(IO &IO,
#undef BCase
}
-void ScalarEnumerationTraits<ELFYAML::ELF_STB>::enumeration(
- IO &IO, ELFYAML::ELF_STB &Value) {
-#define ECase(X) IO.enumCase(Value, #X, ELF::X);
- ECase(STB_LOCAL)
- ECase(STB_GLOBAL)
- ECase(STB_WEAK)
-#undef ECase
-}
-
void ScalarEnumerationTraits<ELFYAML::ELF_STT>::enumeration(
IO &IO, ELFYAML::ELF_STT &Value) {
#define ECase(X) IO.enumCase(Value, #X, ELF::X);
@@ -313,13 +304,19 @@ void MappingTraits<ELFYAML::FileHeader>::mapping(IO &IO,
void MappingTraits<ELFYAML::Symbol>::mapping(IO &IO, ELFYAML::Symbol &Symbol) {
IO.mapOptional("Name", Symbol.Name, StringRef());
- IO.mapOptional("Binding", Symbol.Binding, ELFYAML::ELF_STB(0));
IO.mapOptional("Type", Symbol.Type, ELFYAML::ELF_STT(0));
IO.mapOptional("Section", Symbol.Section, StringRef());
IO.mapOptional("Value", Symbol.Value, Hex64(0));
IO.mapOptional("Size", Symbol.Size, Hex64(0));
}
+void MappingTraits<ELFYAML::LocalGlobalWeakSymbols>::mapping(
+ IO &IO, ELFYAML::LocalGlobalWeakSymbols &Symbols) {
+ IO.mapOptional("Local", Symbols.Local);
+ IO.mapOptional("Global", Symbols.Global);
+ IO.mapOptional("Weak", Symbols.Weak);
+}
+
void MappingTraits<ELFYAML::Section>::mapping(IO &IO,
ELFYAML::Section &Section) {
IO.mapOptional("Name", Section.Name, StringRef());
OpenPOWER on IntegriCloud