aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/ObjectYAML/MachO
diff options
context:
space:
mode:
authorGeorgii Rymar <grimar@accesssoftek.com>2020-06-11 23:18:40 +0300
committerGeorgii Rymar <grimar@accesssoftek.com>2020-06-12 12:03:51 +0300
commitd95f8e7aef79393fbb95b8483c9f494da75b1d83 (patch)
tree5a45afd7fd2807d392101fcf77453957d3f1bf7e /llvm/test/ObjectYAML/MachO
parent91728b9172bfd2a2eccc9dc2ef3462f931579aff (diff)
downloadllvm-d95f8e7aef79393fbb95b8483c9f494da75b1d83.zip
llvm-d95f8e7aef79393fbb95b8483c9f494da75b1d83.tar.gz
llvm-d95f8e7aef79393fbb95b8483c9f494da75b1d83.tar.bz2
[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
Diffstat (limited to 'llvm/test/ObjectYAML/MachO')
-rw-r--r--llvm/test/ObjectYAML/MachO/DWARF-pubsections.yaml5
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/test/ObjectYAML/MachO/DWARF-pubsections.yaml b/llvm/test/ObjectYAML/MachO/DWARF-pubsections.yaml
index 4faac06..0bc510d 100644
--- a/llvm/test/ObjectYAML/MachO/DWARF-pubsections.yaml
+++ b/llvm/test/ObjectYAML/MachO/DWARF-pubsections.yaml
@@ -356,7 +356,8 @@ DWARF:
## contents, if the "debug_pubnames"/"debug_pubtypes" entry doesn't exist in the
## "DWARF" entry.
-# RUN: yaml2obj --docnum=2 %s | obj2yaml | FileCheck %s --check-prefix=EMPTY
+# RUN: yaml2obj --docnum=2 %s -o %t2
+# RUN: obj2yaml %t2 | FileCheck %s --check-prefix=EMPTY
# EMPTY: Sections:
# EMPTY-NEXT: - sectname: __debug_pubnames
@@ -394,7 +395,7 @@ FileHeader:
cpusubtype: 0x00000003
filetype: 0x0000000A
ncmds: 1
- sizeofcmds: 1800
+ sizeofcmds: 1772
flags: 0x00000000
reserved: 0x00000000
LoadCommands: