From 2966d6e80b77c97f65805920d4d3288885de53c9 Mon Sep 17 00:00:00 2001 From: Xing GUO Date: Fri, 4 Sep 2020 22:41:25 +0800 Subject: [MachOYAML] Allow handcrafting custom contents for DWARF sections. This patch enables users to handcraft custom contents for DWARF sections. If we specify the contents of DWARF sections both in the 'DWARF' entry and the 'content', yaml2obj will emit an error message. In addition, this patch helps remove the restriction that only the content of sections whose segname are __DWARF can be specified in the "DWARF" entry. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D87126 --- llvm/test/ObjectYAML/MachO/DWARF-debug_ranges.yaml | 4 -- .../ObjectYAML/MachO/dwarf-content-conflict.yaml | 45 ++++++++++++++++++++++ 2 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 llvm/test/ObjectYAML/MachO/dwarf-content-conflict.yaml (limited to 'llvm/test/ObjectYAML/MachO') diff --git a/llvm/test/ObjectYAML/MachO/DWARF-debug_ranges.yaml b/llvm/test/ObjectYAML/MachO/DWARF-debug_ranges.yaml index fced0be..8948bf9 100644 --- a/llvm/test/ObjectYAML/MachO/DWARF-debug_ranges.yaml +++ b/llvm/test/ObjectYAML/MachO/DWARF-debug_ranges.yaml @@ -93,7 +93,6 @@ LoadCommands: reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 - content: 011101030E1305110155170000022E00030E110112060000032E00030E11011201000000 - sectname: __debug_info segname: __DWARF addr: 0x0000000000000024 @@ -106,7 +105,6 @@ LoadCommands: reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 - content: 520000000400000000000801010000000400000000000000000000000000020D000000000000000000000020000000031700000000000000000000003000000000000000022100000000100000000000000010000000 - sectname: __debug_ranges segname: __DWARF addr: 0x000000000000007A @@ -119,7 +117,6 @@ LoadCommands: reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 - content: 0000000000000000200000000000000000000000000000003000000000000000FFFFFFFFFFFFFFFF00100000000000000000000000000000001000000000000000000000000000000000000000000000 - sectname: __debug_str segname: __DWARF addr: 0x00000000000000CA @@ -132,7 +129,6 @@ LoadCommands: reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 - content: 002F746D702F6D61696E2E630073747269707065643100737472697070656432006D61696E00 - cmd: LC_SYMTAB cmdsize: 24 symoff: 0 diff --git a/llvm/test/ObjectYAML/MachO/dwarf-content-conflict.yaml b/llvm/test/ObjectYAML/MachO/dwarf-content-conflict.yaml new file mode 100644 index 0000000..a4b2b48 --- /dev/null +++ b/llvm/test/ObjectYAML/MachO/dwarf-content-conflict.yaml @@ -0,0 +1,45 @@ +## Test that yaml2obj emits an error message if we specify the DWARF section +## contents both in the 'DWARF' entry and in the 'content'. + +# RUN: not yaml2obj %s 2>&1 | FileCheck %s --check-prefix=CONFLICT + +# CONFLICT: yaml2obj: error: cannot specify section '__debug_str' contents in the 'DWARF' entry and the 'content' at the same time + +--- !mach-o +FileHeader: + magic: 0xFEEDFACF + cputype: 0x01000007 + cpusubtype: 0x00000003 + filetype: 0x0000000A + ncmds: 1 + sizeofcmds: 232 + flags: 0x00000000 + reserved: 0x00000000 +LoadCommands: + - cmd: LC_SEGMENT_64 + cmdsize: 152 + segname: __DWARF + vmaddr: 0x00 + vmsize: 0x00 + fileoff: 0x00 + filesize: 0x00 + maxprot: 0 + initprot: 0 + nsects: 1 + flags: 0 + Sections: + - sectname: __debug_str + segname: __DWARF + addr: 0x00 + size: 12 + offset: 528 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000000 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + content: 1234 +DWARF: + debug_str: [ a, abc ] -- cgit v1.1