From 61fdef6086e72cdb2e148f9c1c2e87e2ed4b589d Mon Sep 17 00:00:00 2001 From: Nick Kledzik Date: Thu, 15 May 2014 20:59:23 +0000 Subject: [mach-o] Add support and test cases for parsing tentative definitions llvm-svn: 208919 --- lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp') 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 { 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); } }; -- cgit v1.2.3