summaryrefslogtreecommitdiffstats
path: root/lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp
diff options
context:
space:
mode:
authorNick Kledzik <kledzik@apple.com>2014-05-15 20:59:23 +0000
committerNick Kledzik <kledzik@apple.com>2014-05-15 20:59:23 +0000
commit61fdef6086e72cdb2e148f9c1c2e87e2ed4b589d (patch)
tree3c8bc231db5a5c8edff4d4ef30e64d0c0f2c5082 /lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp
parent130a3b050423c7e2e2631277d705c96d0a721cac (diff)
downloadbcm5719-llvm-61fdef6086e72cdb2e148f9c1c2e87e2ed4b589d.tar.gz
bcm5719-llvm-61fdef6086e72cdb2e148f9c1c2e87e2ed4b589d.zip
[mach-o] Add support and test cases for parsing tentative definitions
llvm-svn: 208919
Diffstat (limited to 'lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp')
-rw-r--r--lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp b/lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp
index d3377399c2e..fb63cac227e 100644
--- a/lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp
+++ b/lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp
@@ -406,8 +406,18 @@ struct MappingTraits<Symbol> {
io.mapRequired("type", sym.type);
io.mapOptional("scope", sym.scope, SymbolScope(0));
io.mapOptional("sect", sym.sect, (uint8_t)0);
- io.mapOptional("desc", sym.desc, SymbolDesc(0));
- io.mapRequired("value", sym.value);
+ if (sym.type == llvm::MachO::N_UNDF) {
+ // In undef symbols, desc field contains alignment/ordinal info
+ // which is better represented as a hex vaule.
+ uint16_t t1 = sym.desc;
+ Hex16 t2 = t1;
+ io.mapOptional("desc", t2, Hex16(0));
+ sym.desc = t2;
+ } else {
+ // In defined symbols, desc fit is a set of option bits.
+ io.mapOptional("desc", sym.desc, SymbolDesc(0));
+ }
+ io.mapRequired("value", sym.value);
}
};
OpenPOWER on IntegriCloud