diff options
| author | Nick Kledzik <kledzik@apple.com> | 2014-05-15 20:59:23 +0000 |
|---|---|---|
| committer | Nick Kledzik <kledzik@apple.com> | 2014-05-15 20:59:23 +0000 |
| commit | 61fdef6086e72cdb2e148f9c1c2e87e2ed4b589d (patch) | |
| tree | 3c8bc231db5a5c8edff4d4ef30e64d0c0f2c5082 /lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp | |
| parent | 130a3b050423c7e2e2631277d705c96d0a721cac (diff) | |
| download | bcm5719-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.cpp | 14 |
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); } }; |

