diff --git a/lldb/unittests/Symbol/Inputs/inlined-functions.yaml b/lldb/unittests/Symbol/Inputs/inlined-functions.yaml --- a/lldb/unittests/Symbol/Inputs/inlined-functions.yaml +++ b/lldb/unittests/Symbol/Inputs/inlined-functions.yaml @@ -711,7 +711,6 @@ LineRange: 14 OpcodeBase: 13 StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ] - IncludeDirs: [] Files: - Name: inlined-functions.cpp DirIdx: 0 diff --git a/llvm/lib/ObjectYAML/DWARFYAML.cpp b/llvm/lib/ObjectYAML/DWARFYAML.cpp --- a/llvm/lib/ObjectYAML/DWARFYAML.cpp +++ b/llvm/lib/ObjectYAML/DWARFYAML.cpp @@ -246,9 +246,9 @@ IO.mapRequired("LineRange", LineTable.LineRange); IO.mapRequired("OpcodeBase", LineTable.OpcodeBase); IO.mapRequired("StandardOpcodeLengths", LineTable.StandardOpcodeLengths); - IO.mapRequired("IncludeDirs", LineTable.IncludeDirs); - IO.mapRequired("Files", LineTable.Files); - IO.mapRequired("Opcodes", LineTable.Opcodes); + IO.mapOptional("IncludeDirs", LineTable.IncludeDirs); + IO.mapOptional("Files", LineTable.Files); + IO.mapOptional("Opcodes", LineTable.Opcodes); } void MappingTraits::mapping( diff --git a/llvm/test/ObjectYAML/MachO/DWARF-debug_info.yaml b/llvm/test/ObjectYAML/MachO/DWARF-debug_info.yaml --- a/llvm/test/ObjectYAML/MachO/DWARF-debug_info.yaml +++ b/llvm/test/ObjectYAML/MachO/DWARF-debug_info.yaml @@ -478,7 +478,6 @@ - 0 - 0 - 1 - IncludeDirs: Files: - Name: hello_world.c DirIdx: 0 diff --git a/llvm/test/ObjectYAML/MachO/DWARF-debug_line.yaml b/llvm/test/ObjectYAML/MachO/DWARF-debug_line.yaml --- a/llvm/test/ObjectYAML/MachO/DWARF-debug_line.yaml +++ b/llvm/test/ObjectYAML/MachO/DWARF-debug_line.yaml @@ -499,7 +499,6 @@ LineRange: 14 OpcodeBase: 13 StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ] - IncludeDirs: Files: - Name: hello_world.c DirIdx: 0 @@ -540,7 +539,6 @@ # CHECK-NEXT: LineRange: 14 # CHECK-NEXT: OpcodeBase: 13 # CHECK-NEXT: StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ] -# CHECK-NEXT: IncludeDirs: # CHECK-NEXT: Files: # CHECK-NEXT: - Name: hello_world.c # CHECK-NEXT: DirIdx: 0 diff --git a/llvm/test/ObjectYAML/MachO/DWARF5-debug_info.yaml b/llvm/test/ObjectYAML/MachO/DWARF5-debug_info.yaml --- a/llvm/test/ObjectYAML/MachO/DWARF5-debug_info.yaml +++ b/llvm/test/ObjectYAML/MachO/DWARF5-debug_info.yaml @@ -479,7 +479,6 @@ - 0 - 0 - 1 - IncludeDirs: Files: - Name: hello_world.c DirIdx: 0 diff --git a/llvm/test/tools/llvm-dwarfdump/X86/verify_attr_file_indexes.yaml b/llvm/test/tools/llvm-dwarfdump/X86/verify_attr_file_indexes.yaml --- a/llvm/test/tools/llvm-dwarfdump/X86/verify_attr_file_indexes.yaml +++ b/llvm/test/tools/llvm-dwarfdump/X86/verify_attr_file_indexes.yaml @@ -118,5 +118,4 @@ DirIdx: 1 ModTime: 0 Length: 0 - Opcodes: [] ... diff --git a/llvm/test/tools/llvm-dwarfdump/X86/verify_attr_file_indexes_no_files.yaml b/llvm/test/tools/llvm-dwarfdump/X86/verify_attr_file_indexes_no_files.yaml --- a/llvm/test/tools/llvm-dwarfdump/X86/verify_attr_file_indexes_no_files.yaml +++ b/llvm/test/tools/llvm-dwarfdump/X86/verify_attr_file_indexes_no_files.yaml @@ -113,6 +113,4 @@ StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ] IncludeDirs: - '/tmp' - Files: - Opcodes: [] ... diff --git a/llvm/test/tools/llvm-gsymutil/ARM_AArch64/fat-macho-dwarf.yaml b/llvm/test/tools/llvm-gsymutil/ARM_AArch64/fat-macho-dwarf.yaml --- a/llvm/test/tools/llvm-gsymutil/ARM_AArch64/fat-macho-dwarf.yaml +++ b/llvm/test/tools/llvm-gsymutil/ARM_AArch64/fat-macho-dwarf.yaml @@ -472,7 +472,6 @@ LineRange: 14 OpcodeBase: 13 StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ] - IncludeDirs: [] Files: - Name: main.cpp DirIdx: 0 @@ -941,7 +940,6 @@ LineRange: 14 OpcodeBase: 13 StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ] - IncludeDirs: [] Files: - Name: main.cpp DirIdx: 0 diff --git a/llvm/test/tools/llvm-gsymutil/X86/mach-dwarf.yaml b/llvm/test/tools/llvm-gsymutil/X86/mach-dwarf.yaml --- a/llvm/test/tools/llvm-gsymutil/X86/mach-dwarf.yaml +++ b/llvm/test/tools/llvm-gsymutil/X86/mach-dwarf.yaml @@ -688,7 +688,6 @@ LineRange: 14 OpcodeBase: 13 StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ] - IncludeDirs: [] Files: - Name: main.cpp DirIdx: 0 diff --git a/llvm/test/tools/llvm-objcopy/MachO/Inputs/strip-all-with-dwarf.yaml b/llvm/test/tools/llvm-objcopy/MachO/Inputs/strip-all-with-dwarf.yaml --- a/llvm/test/tools/llvm-objcopy/MachO/Inputs/strip-all-with-dwarf.yaml +++ b/llvm/test/tools/llvm-objcopy/MachO/Inputs/strip-all-with-dwarf.yaml @@ -469,7 +469,6 @@ LineRange: 14 OpcodeBase: 13 StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ] - IncludeDirs: [] Files: - Name: strip-test.c DirIdx: 0 diff --git a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-line.yaml b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-line.yaml --- a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-line.yaml +++ b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-line.yaml @@ -92,7 +92,6 @@ DirIdx: 2 ModTime: 3 Length: 4 - Opcodes: [] ## Generate and verify a big endian DWARF32 .debug_line section. @@ -211,9 +210,6 @@ LineRange: 14 OpcodeBase: 13 StandardOpcodeLengths: [] - IncludeDirs: [] - Files: [] - Opcodes: [] ## e) Test that yaml2obj emits an error message when both the "Content" and the ## "debug_line" entry are specified at the same time. @@ -240,9 +236,6 @@ LineRange: 14 OpcodeBase: 13 StandardOpcodeLengths: [] - IncludeDirs: [] - Files: [] - Opcodes: [] ## f) Test that all the properties can be overridden by the section header when ## the "debug_line" entry doesn't exist. @@ -307,9 +300,6 @@ LineRange: 14 OpcodeBase: 13 StandardOpcodeLengths: [] - IncludeDirs: [] - Files: [] - Opcodes: [] ## h) Test that the address size is inferred from the target machine. @@ -355,8 +345,6 @@ LineRange: 14 OpcodeBase: 13 StandardOpcodeLengths: [] - IncludeDirs: [] - Files: [] Opcodes: - Opcode: DW_LNS_extended_op ExtLen: 9 @@ -439,8 +427,6 @@ LineRange: 14 OpcodeBase: 13 StandardOpcodeLengths: [] - IncludeDirs: [] - Files: [] Opcodes: - Opcode: DW_LNS_copy - Opcode: DW_LNS_advance_pc @@ -591,3 +577,42 @@ - Opcode: DW_LNS_extended_op ExtLen: 1 SubOpcode: DW_LNE_end_sequence + +## k) Test that we can omit the include_directories, file_names and opcodes +## fields of the line table. + +# RUN: yaml2obj --docnum=11 %s -o %t11.o +# RUN: llvm-readelf --hex-dump=.debug_line %t11.o | \ +# RUN: FileCheck %s --check-prefix=OMIT-FIELDS + +# OMIT-FIELDS: Hex dump of section '.debug_line': +# OMIT-FIELDS-NEXT: 0x00000000 11000000 04000b00 00000101 01fb0e04 ................ +## ^------- unit_length (4-byte) +## ^--- version (2-byte) +## ^-------- header_length (4-byte) +## ^- minimum_instruction_length (1-byte) +## ^- maximum_operations_per_instruction (1-byte) +## ^- default_is_stmt (1-byte) +## ^- line_base (1-byte) -5 +## ^- line_range (1-byte) +## ^- opcode_base (1-byte) +# OMIT-FIELDS-NEXT: 0x00000010 00010100 00 ..... +## ^----- standard_opcode_lengths (3-byte) +## ^- include_directories null byte (1-byte) +## ^- file_names null byte (1-byte) + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC +DWARF: + debug_line: + - Version: 4 + MinInstLength: 1 + MaxOpsPerInst: 1 + DefaultIsStmt: 1 + LineBase: 251 + LineRange: 14 + OpcodeBase: 4 + StandardOpcodeLengths: [ 0, 1, 1 ]