[yaml2obj][MachO] - Fix PubName/PubType handling.
`PubName` and `PubType` are optional fields since D80722. They are defined as: Optional<PubSection> PubNames; Optional<PubSection> PubTypes; And initialized in the following way: IO.mapOptional("debug_pubnames", DWARF.PubNames); IO.mapOptional("debug_pubtypes", DWARF.PubTypes); But problem is that because of the issue in `YAMLTraits.cpp`, when there are no `debug_pubnames`/`debug_pubtypes` keys in a YAML description, they are not initialized to `Optional::None` as the code expects, but they are initialized to default `PubSection()` instances. Because of this, the `if` condition in the following code is always true: if (Obj.DWARF.PubNames) Err = DWARFYAML::emitPubSection(OS, *Obj.DWARF.PubNames, Obj.IsLittleEndian); What means `emitPubSection` is always called and it writes few values. This patch fixes the issue. I've reduced `sizeofcmds` by size of data previously written because of this bug. Differential revision: https://reviews.llvm.org/D81686
Loading
Please register or sign in to comment