Author: gclayton Date: Tue May 7 08:37:28 2019 New Revision: 360161 URL: http://llvm.org/viewvc/llvm-project?rev=360161&view=rev Log: Added missing files from 360071.
Added: lldb/trunk/unittests/Symbol/Inputs/inlined-functions.yaml lldb/trunk/unittests/Symbol/TestLineEntry.cpp Modified: lldb/trunk/unittests/Symbol/CMakeLists.txt Modified: lldb/trunk/unittests/Symbol/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Symbol/CMakeLists.txt?rev=360161&r1=360160&r2=360161&view=diff ============================================================================== --- lldb/trunk/unittests/Symbol/CMakeLists.txt (original) +++ lldb/trunk/unittests/Symbol/CMakeLists.txt Tue May 7 08:37:28 2019 @@ -4,6 +4,7 @@ add_lldb_unittest(SymbolTests TestClangASTContext.cpp TestDWARFCallFrameInfo.cpp TestType.cpp + TestLineEntry.cpp LINK_LIBS lldbHost Added: lldb/trunk/unittests/Symbol/Inputs/inlined-functions.yaml URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Symbol/Inputs/inlined-functions.yaml?rev=360161&view=auto ============================================================================== --- lldb/trunk/unittests/Symbol/Inputs/inlined-functions.yaml (added) +++ lldb/trunk/unittests/Symbol/Inputs/inlined-functions.yaml Tue May 7 08:37:28 2019 @@ -0,0 +1,943 @@ +--- !mach-o +FileHeader: + magic: 0xFEEDFACF + cputype: 0x01000007 + cpusubtype: 0x00000003 + filetype: 0x00000001 + ncmds: 4 + sizeofcmds: 1160 + flags: 0x00002000 + reserved: 0x00000000 +LoadCommands: + - cmd: LC_SEGMENT_64 + cmdsize: 1032 + segname: '' + vmaddr: 0 + vmsize: 2022 + fileoff: 1192 + filesize: 2022 + maxprot: 7 + initprot: 7 + nsects: 6 + flags: 0 + Sections: + - sectname: __text + segname: __TEXT + addr: 0x0000000000000000 + size: 224 + offset: 0x000004A8 + align: 4 + reloff: 0x00000C90 + nreloc: 1 + flags: 0x80000400 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: __debug_str + segname: __DWARF + addr: 0x00000000000000E0 + size: 223 + offset: 0x00000588 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x02000000 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: __debug_abbrev + segname: __DWARF + addr: 0x00000000000001BF + size: 190 + offset: 0x00000667 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x02000000 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: __debug_info + segname: __DWARF + addr: 0x000000000000027D + size: 583 + offset: 0x00000725 + align: 0 + reloff: 0x00000C98 + nreloc: 8 + flags: 0x02000000 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: __compact_unwind + segname: __LD + addr: 0x0000000000000670 + size: 64 + offset: 0x00000B18 + align: 3 + reloff: 0x00000CD8 + nreloc: 2 + flags: 0x02000000 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: __debug_line + segname: __DWARF + addr: 0x0000000000000718 + size: 206 + offset: 0x00000BC0 + align: 0 + reloff: 0x00000CE8 + nreloc: 1 + flags: 0x02000000 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - cmd: LC_BUILD_VERSION + cmdsize: 24 + platform: 1 + minos: 658944 + sdk: 658944 + ntools: 0 + - cmd: LC_SYMTAB + cmdsize: 24 + symoff: 3312 + nsyms: 2 + stroff: 3344 + strsize: 20 + - cmd: LC_DYSYMTAB + cmdsize: 80 + ilocalsym: 0 + nlocalsym: 0 + iextdefsym: 0 + nextdefsym: 2 + iundefsym: 2 + nundefsym: 0 + tocoff: 0 + ntoc: 0 + modtaboff: 0 + nmodtab: 0 + extrefsymoff: 0 + nextrefsyms: 0 + indirectsymoff: 0 + nindirectsyms: 0 + extreloff: 0 + nextrel: 0 + locreloff: 0 + nlocrel: 0 +LinkEditData: + NameList: + - n_strx: 7 + n_type: 0x0F + n_sect: 1 + n_desc: 0 + n_value: 0 + - n_strx: 1 + n_type: 0x0F + n_sect: 1 + n_desc: 0 + n_value: 32 + StringTable: + - '' + - _main + - __Z4sum3iii + - '' +DWARF: + debug_str: + - 'Apple LLVM version 10.0.1 (clang-1001.0.46.3)' + - inlined-functions.cpp + - '/Users/aadsm/Projects/llvm-project/lldb/unittests/Symbol/Inputs' + - sum3 + - _Z4sum3iii + - _Z4sum2ii + - sum2 + - int + - a + - b + - result + - _Z4sum4iiii + - sum4 + - c + - d + - main + - argc + - argv + - char + - sum + debug_abbrev: + - Code: 0x00000001 + Tag: DW_TAG_compile_unit + Children: DW_CHILDREN_yes + Attributes: + - Attribute: DW_AT_producer + Form: DW_FORM_strp + - Attribute: DW_AT_language + Form: DW_FORM_data2 + - Attribute: DW_AT_name + Form: DW_FORM_strp + - Attribute: DW_AT_stmt_list + Form: DW_FORM_sec_offset + - Attribute: DW_AT_comp_dir + Form: DW_FORM_strp + - Attribute: DW_AT_low_pc + Form: DW_FORM_addr + - Attribute: DW_AT_high_pc + Form: DW_FORM_data4 + - Code: 0x00000002 + Tag: DW_TAG_subprogram + Children: DW_CHILDREN_yes + Attributes: + - Attribute: DW_AT_low_pc + Form: DW_FORM_addr + - Attribute: DW_AT_high_pc + Form: DW_FORM_data4 + - Attribute: DW_AT_frame_base + Form: DW_FORM_exprloc + - Attribute: DW_AT_linkage_name + Form: DW_FORM_strp + - Attribute: DW_AT_name + Form: DW_FORM_strp + - Attribute: DW_AT_decl_file + Form: DW_FORM_data1 + - Attribute: DW_AT_decl_line + Form: DW_FORM_data1 + - Attribute: DW_AT_type + Form: DW_FORM_ref4 + - Attribute: DW_AT_external + Form: DW_FORM_flag_present + - Code: 0x00000003 + Tag: DW_TAG_formal_parameter + Children: DW_CHILDREN_no + Attributes: + - Attribute: DW_AT_location + Form: DW_FORM_exprloc + - Attribute: DW_AT_name + Form: DW_FORM_strp + - Attribute: DW_AT_decl_file + Form: DW_FORM_data1 + - Attribute: DW_AT_decl_line + Form: DW_FORM_data1 + - Attribute: DW_AT_type + Form: DW_FORM_ref4 + - Code: 0x00000004 + Tag: DW_TAG_variable + Children: DW_CHILDREN_no + Attributes: + - Attribute: DW_AT_location + Form: DW_FORM_exprloc + - Attribute: DW_AT_name + Form: DW_FORM_strp + - Attribute: DW_AT_decl_file + Form: DW_FORM_data1 + - Attribute: DW_AT_decl_line + Form: DW_FORM_data1 + - Attribute: DW_AT_type + Form: DW_FORM_ref4 + - Code: 0x00000005 + Tag: DW_TAG_subprogram + Children: DW_CHILDREN_yes + Attributes: + - Attribute: DW_AT_linkage_name + Form: DW_FORM_strp + - Attribute: DW_AT_name + Form: DW_FORM_strp + - Attribute: DW_AT_decl_file + Form: DW_FORM_data1 + - Attribute: DW_AT_decl_line + Form: DW_FORM_data1 + - Attribute: DW_AT_type + Form: DW_FORM_ref4 + - Attribute: DW_AT_external + Form: DW_FORM_flag_present + - Attribute: DW_AT_inline + Form: DW_FORM_data1 + - Code: 0x00000006 + Tag: DW_TAG_formal_parameter + Children: DW_CHILDREN_no + Attributes: + - Attribute: DW_AT_name + Form: DW_FORM_strp + - Attribute: DW_AT_decl_file + Form: DW_FORM_data1 + - Attribute: DW_AT_decl_line + Form: DW_FORM_data1 + - Attribute: DW_AT_type + Form: DW_FORM_ref4 + - Code: 0x00000007 + Tag: DW_TAG_variable + Children: DW_CHILDREN_no + Attributes: + - Attribute: DW_AT_name + Form: DW_FORM_strp + - Attribute: DW_AT_decl_file + Form: DW_FORM_data1 + - Attribute: DW_AT_decl_line + Form: DW_FORM_data1 + - Attribute: DW_AT_type + Form: DW_FORM_ref4 + - Code: 0x00000008 + Tag: DW_TAG_base_type + Children: DW_CHILDREN_no + Attributes: + - Attribute: DW_AT_name + Form: DW_FORM_strp + - Attribute: DW_AT_encoding + Form: DW_FORM_data1 + - Attribute: DW_AT_byte_size + Form: DW_FORM_data1 + - Code: 0x00000009 + Tag: DW_TAG_subprogram + Children: DW_CHILDREN_yes + Attributes: + - Attribute: DW_AT_low_pc + Form: DW_FORM_addr + - Attribute: DW_AT_high_pc + Form: DW_FORM_data4 + - Attribute: DW_AT_frame_base + Form: DW_FORM_exprloc + - Attribute: DW_AT_name + Form: DW_FORM_strp + - Attribute: DW_AT_decl_file + Form: DW_FORM_data1 + - Attribute: DW_AT_decl_line + Form: DW_FORM_data1 + - Attribute: DW_AT_type + Form: DW_FORM_ref4 + - Attribute: DW_AT_external + Form: DW_FORM_flag_present + - Code: 0x0000000A + Tag: DW_TAG_inlined_subroutine + Children: DW_CHILDREN_yes + Attributes: + - Attribute: DW_AT_abstract_origin + Form: DW_FORM_ref4 + - Attribute: DW_AT_low_pc + Form: DW_FORM_addr + - Attribute: DW_AT_high_pc + Form: DW_FORM_data4 + - Attribute: DW_AT_call_file + Form: DW_FORM_data1 + - Attribute: DW_AT_call_line + Form: DW_FORM_data1 + - Code: 0x0000000B + Tag: DW_TAG_formal_parameter + Children: DW_CHILDREN_no + Attributes: + - Attribute: DW_AT_location + Form: DW_FORM_exprloc + - Attribute: DW_AT_abstract_origin + Form: DW_FORM_ref4 + - Code: 0x0000000C + Tag: DW_TAG_variable + Children: DW_CHILDREN_no + Attributes: + - Attribute: DW_AT_location + Form: DW_FORM_exprloc + - Attribute: DW_AT_abstract_origin + Form: DW_FORM_ref4 + - Code: 0x0000000D + Tag: DW_TAG_pointer_type + Children: DW_CHILDREN_no + Attributes: + - Attribute: DW_AT_type + Form: DW_FORM_ref4 + debug_info: + - Length: + TotalLength: 579 + Version: 4 + AbbrOffset: 0 + AddrSize: 8 + Entries: + - AbbrCode: 0x00000001 + Values: + - Value: 0x0000000000000000 + - Value: 0x0000000000000004 + - Value: 0x000000000000002E + - Value: 0x0000000000000000 + - Value: 0x0000000000000044 + - Value: 0x0000000000000000 + - Value: 0x00000000000000E0 + - AbbrCode: 0x00000002 + Values: + - Value: 0x0000000000000000 + - Value: 0x000000000000001E + - Value: 0x0000000000000001 + BlockData: + - 0x56 + - Value: 0x0000000000000089 + - Value: 0x0000000000000084 + - Value: 0x0000000000000001 + - Value: 0x0000000000000006 + - Value: 0x00000000000000B2 + - Value: 0x0000000000000001 + - AbbrCode: 0x00000003 + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x7C + - Value: 0x00000000000000A7 + - Value: 0x0000000000000001 + - Value: 0x0000000000000006 + - Value: 0x00000000000000B2 + - AbbrCode: 0x00000003 + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x78 + - Value: 0x00000000000000A9 + - Value: 0x0000000000000001 + - Value: 0x0000000000000006 + - Value: 0x00000000000000B2 + - AbbrCode: 0x00000003 + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x74 + - Value: 0x00000000000000C3 + - Value: 0x0000000000000001 + - Value: 0x0000000000000006 + - Value: 0x00000000000000B2 + - AbbrCode: 0x00000004 + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x70 + - Value: 0x00000000000000AB + - Value: 0x0000000000000001 + - Value: 0x0000000000000007 + - Value: 0x00000000000000B2 + - AbbrCode: 0x00000000 + Values: [] + - AbbrCode: 0x00000005 + Values: + - Value: 0x0000000000000094 + - Value: 0x000000000000009E + - Value: 0x0000000000000001 + - Value: 0x0000000000000001 + - Value: 0x00000000000000B2 + - Value: 0x0000000000000001 + - Value: 0x0000000000000001 + - AbbrCode: 0x00000006 + Values: + - Value: 0x00000000000000A7 + - Value: 0x0000000000000001 + - Value: 0x0000000000000001 + - Value: 0x00000000000000B2 + - AbbrCode: 0x00000006 + Values: + - Value: 0x00000000000000A9 + - Value: 0x0000000000000001 + - Value: 0x0000000000000001 + - Value: 0x00000000000000B2 + - AbbrCode: 0x00000007 + Values: + - Value: 0x00000000000000AB + - Value: 0x0000000000000001 + - Value: 0x0000000000000002 + - Value: 0x00000000000000B2 + - AbbrCode: 0x00000000 + Values: [] + - AbbrCode: 0x00000008 + Values: + - Value: 0x00000000000000A3 + - Value: 0x0000000000000005 + - Value: 0x0000000000000004 + - AbbrCode: 0x00000005 + Values: + - Value: 0x00000000000000B2 + - Value: 0x00000000000000BE + - Value: 0x0000000000000001 + - Value: 0x000000000000000B + - Value: 0x00000000000000B2 + - Value: 0x0000000000000001 + - Value: 0x0000000000000001 + - AbbrCode: 0x00000006 + Values: + - Value: 0x00000000000000A7 + - Value: 0x0000000000000001 + - Value: 0x000000000000000B + - Value: 0x00000000000000B2 + - AbbrCode: 0x00000006 + Values: + - Value: 0x00000000000000A9 + - Value: 0x0000000000000001 + - Value: 0x000000000000000B + - Value: 0x00000000000000B2 + - AbbrCode: 0x00000006 + Values: + - Value: 0x00000000000000C3 + - Value: 0x0000000000000001 + - Value: 0x000000000000000B + - Value: 0x00000000000000B2 + - AbbrCode: 0x00000006 + Values: + - Value: 0x00000000000000C5 + - Value: 0x0000000000000001 + - Value: 0x000000000000000B + - Value: 0x00000000000000B2 + - AbbrCode: 0x00000007 + Values: + - Value: 0x00000000000000AB + - Value: 0x0000000000000001 + - Value: 0x000000000000000C + - Value: 0x00000000000000B2 + - AbbrCode: 0x00000000 + Values: [] + - AbbrCode: 0x00000009 + Values: + - Value: 0x0000000000000020 + - Value: 0x00000000000000C0 + - Value: 0x0000000000000001 + BlockData: + - 0x56 + - Value: 0x00000000000000C7 + - Value: 0x0000000000000001 + - Value: 0x0000000000000011 + - Value: 0x00000000000000B2 + - Value: 0x0000000000000001 + - AbbrCode: 0x00000003 + Values: + - Value: 0x0000000000000003 + BlockData: + - 0x91 + - 0xB4 + - 0x7F + - Value: 0x00000000000000CC + - Value: 0x0000000000000001 + - Value: 0x0000000000000011 + - Value: 0x00000000000000B2 + - AbbrCode: 0x00000003 + Values: + - Value: 0x0000000000000003 + BlockData: + - 0x91 + - 0xA8 + - 0x7F + - Value: 0x00000000000000D1 + - Value: 0x0000000000000001 + - Value: 0x0000000000000011 + - Value: 0x0000000000000235 + - AbbrCode: 0x00000004 + Values: + - Value: 0x0000000000000003 + BlockData: + - 0x91 + - 0xA4 + - 0x7F + - Value: 0x00000000000000DB + - Value: 0x0000000000000001 + - Value: 0x0000000000000013 + - Value: 0x00000000000000B2 + - AbbrCode: 0x0000000A + Values: + - Value: 0x0000000000000080 + - Value: 0x000000000000005A + - Value: 0x0000000000000025 + - Value: 0x0000000000000001 + - Value: 0x0000000000000012 + - AbbrCode: 0x0000000B + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x44 + - Value: 0x0000000000000090 + - AbbrCode: 0x0000000B + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x40 + - Value: 0x000000000000009B + - AbbrCode: 0x0000000C + Values: + - Value: 0x0000000000000003 + BlockData: + - 0x91 + - 0xBC + - 0x7F + - Value: 0x00000000000000A6 + - AbbrCode: 0x00000000 + Values: [] + - AbbrCode: 0x0000000A + Values: + - Value: 0x00000000000000B9 + - Value: 0x000000000000007F + - Value: 0x000000000000003C + - Value: 0x0000000000000001 + - Value: 0x0000000000000013 + - AbbrCode: 0x0000000B + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x64 + - Value: 0x00000000000000C9 + - AbbrCode: 0x0000000B + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x60 + - Value: 0x00000000000000D4 + - AbbrCode: 0x0000000B + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x5C + - Value: 0x00000000000000DF + - AbbrCode: 0x0000000B + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x58 + - Value: 0x00000000000000EA + - AbbrCode: 0x0000000C + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x54 + - Value: 0x00000000000000F5 + - AbbrCode: 0x0000000A + Values: + - Value: 0x0000000000000080 + - Value: 0x000000000000008B + - Value: 0x000000000000000C + - Value: 0x0000000000000001 + - Value: 0x000000000000000C + - AbbrCode: 0x0000000B + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x70 + - Value: 0x0000000000000090 + - AbbrCode: 0x0000000B + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x6C + - Value: 0x000000000000009B + - AbbrCode: 0x0000000C + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x68 + - Value: 0x00000000000000A6 + - AbbrCode: 0x00000000 + Values: [] + - AbbrCode: 0x0000000A + Values: + - Value: 0x0000000000000080 + - Value: 0x00000000000000A3 + - Value: 0x0000000000000009 + - Value: 0x0000000000000001 + - Value: 0x000000000000000C + - AbbrCode: 0x0000000B + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x7C + - Value: 0x0000000000000090 + - AbbrCode: 0x0000000B + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x78 + - Value: 0x000000000000009B + - AbbrCode: 0x0000000C + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x74 + - Value: 0x00000000000000A6 + - AbbrCode: 0x00000000 + Values: [] + - AbbrCode: 0x00000000 + Values: [] + - AbbrCode: 0x0000000A + Values: + - Value: 0x0000000000000080 + - Value: 0x00000000000000CC + - Value: 0x0000000000000009 + - Value: 0x0000000000000001 + - Value: 0x0000000000000014 + - AbbrCode: 0x0000000B + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x50 + - Value: 0x0000000000000090 + - AbbrCode: 0x0000000B + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x4C + - Value: 0x000000000000009B + - AbbrCode: 0x0000000C + Values: + - Value: 0x0000000000000002 + BlockData: + - 0x91 + - 0x48 + - Value: 0x00000000000000A6 + - AbbrCode: 0x00000000 + Values: [] + - AbbrCode: 0x00000000 + Values: [] + - AbbrCode: 0x0000000D + Values: + - Value: 0x000000000000023A + - AbbrCode: 0x0000000D + Values: + - Value: 0x000000000000023F + - AbbrCode: 0x00000008 + Values: + - Value: 0x00000000000000D6 + - Value: 0x0000000000000006 + - Value: 0x0000000000000001 + - AbbrCode: 0x00000000 + Values: [] + debug_line: + - Length: + TotalLength: 202 + Version: 4 + PrologueLength: 45 + MinInstLength: 1 + MaxOpsPerInst: 1 + DefaultIsStmt: 1 + LineBase: 251 + 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 + ModTime: 0 + Length: 0 + Opcodes: + - Opcode: DW_LNS_extended_op + ExtLen: 9 + SubOpcode: DW_LNE_set_address + Data: 0 + - Opcode: 0x17 + Data: 0 + - Opcode: DW_LNS_set_column + Data: 18 + - Opcode: DW_LNS_set_prologue_end + Data: 18 + - Opcode: 0xC9 + Data: 18 + - Opcode: DW_LNS_set_column + Data: 20 + - Opcode: DW_LNS_negate_stmt + Data: 20 + - Opcode: 0x3C + Data: 20 + - Opcode: DW_LNS_set_column + Data: 24 + - Opcode: 0x3C + Data: 24 + - Opcode: DW_LNS_set_column + Data: 9 + - Opcode: 0x3C + Data: 9 + - Opcode: DW_LNS_set_column + Data: 12 + - Opcode: DW_LNS_negate_stmt + Data: 12 + - Opcode: 0x3D + Data: 12 + - Opcode: DW_LNS_set_column + Data: 5 + - Opcode: DW_LNS_negate_stmt + Data: 5 + - Opcode: 0x3C + Data: 5 + - Opcode: DW_LNS_set_column + Data: 0 + - Opcode: DW_LNS_negate_stmt + Data: 0 + - Opcode: DW_LNS_advance_line + SData: 9 + Data: 0 + - Opcode: 0x4A + Data: 0 + - Opcode: DW_LNS_set_column + Data: 5 + - Opcode: DW_LNS_set_prologue_end + Data: 5 + - Opcode: DW_LNS_const_add_pc + Data: 5 + - Opcode: 0x59 + Data: 5 + - Opcode: DW_LNS_set_column + Data: 18 + - Opcode: DW_LNS_advance_line + SData: -16 + Data: 18 + - Opcode: DW_LNS_advance_pc + Data: 36 + - Opcode: DW_LNS_copy + Data: 36 + - Opcode: DW_LNS_set_column + Data: 20 + - Opcode: DW_LNS_negate_stmt + Data: 20 + - Opcode: 0x3C + Data: 20 + - Opcode: DW_LNS_set_column + Data: 9 + - Opcode: 0x3C + Data: 9 + - Opcode: DW_LNS_set_column + Data: 23 + - Opcode: DW_LNS_negate_stmt + Data: 23 + - Opcode: DW_LNS_advance_line + SData: 10 + Data: 23 + - Opcode: DW_LNS_const_add_pc + Data: 23 + - Opcode: 0xD6 + Data: 23 + - Opcode: DW_LNS_set_column + Data: 26 + - Opcode: DW_LNS_negate_stmt + Data: 26 + - Opcode: 0x3C + Data: 26 + - Opcode: DW_LNS_set_column + Data: 18 + - Opcode: DW_LNS_negate_stmt + Data: 18 + - Opcode: DW_LNS_advance_line + SData: -10 + Data: 18 + - Opcode: 0x90 + Data: 18 + - Opcode: DW_LNS_set_column + Data: 20 + - Opcode: DW_LNS_negate_stmt + Data: 20 + - Opcode: 0x3C + Data: 20 + - Opcode: DW_LNS_set_column + Data: 9 + - Opcode: 0x3C + Data: 9 + - Opcode: DW_LNS_set_column + Data: 12 + - Opcode: DW_LNS_negate_stmt + Data: 12 + - Opcode: 0x3D + Data: 12 + - Opcode: DW_LNS_set_column + Data: 36 + - Opcode: DW_LNS_advance_line + SData: 9 + Data: 36 + - Opcode: 0x3C + Data: 36 + - Opcode: DW_LNS_set_column + Data: 39 + - Opcode: DW_LNS_negate_stmt + Data: 39 + - Opcode: 0x3C + Data: 39 + - Opcode: DW_LNS_set_column + Data: 18 + - Opcode: DW_LNS_negate_stmt + Data: 18 + - Opcode: DW_LNS_advance_line + SData: -10 + Data: 18 + - Opcode: 0x90 + Data: 18 + - Opcode: DW_LNS_set_column + Data: 20 + - Opcode: DW_LNS_negate_stmt + Data: 20 + - Opcode: 0x3C + Data: 20 + - Opcode: DW_LNS_set_column + Data: 9 + - Opcode: 0x3C + Data: 9 + - Opcode: DW_LNS_set_column + Data: 29 + - Opcode: DW_LNS_negate_stmt + Data: 29 + - Opcode: DW_LNS_advance_line + SData: 10 + Data: 29 + - Opcode: 0x3C + Data: 29 + - Opcode: DW_LNS_set_column + Data: 9 + - Opcode: DW_LNS_negate_stmt + Data: 9 + - Opcode: 0x3C + Data: 9 + - Opcode: DW_LNS_set_column + Data: 12 + - Opcode: DW_LNS_negate_stmt + Data: 12 + - Opcode: 0x3D + Data: 12 + - Opcode: 0x67 + Data: 12 + - Opcode: DW_LNS_set_column + Data: 9 + - Opcode: 0x41 + Data: 9 + - Opcode: DW_LNS_set_column + Data: 18 + - Opcode: DW_LNS_advance_line + SData: -17 + Data: 18 + - Opcode: DW_LNS_const_add_pc + Data: 18 + - Opcode: 0x12 + Data: 18 + - Opcode: DW_LNS_set_column + Data: 20 + - Opcode: DW_LNS_negate_stmt + Data: 20 + - Opcode: 0x3C + Data: 20 + - Opcode: DW_LNS_set_column + Data: 9 + - Opcode: 0x3C + Data: 9 + - Opcode: DW_LNS_set_column + Data: 5 + - Opcode: DW_LNS_negate_stmt + Data: 5 + - Opcode: DW_LNS_advance_line + SData: 19 + Data: 5 + - Opcode: 0x3C + Data: 5 + - Opcode: DW_LNS_advance_pc + Data: 11 + - Opcode: DW_LNS_extended_op + ExtLen: 1 + SubOpcode: DW_LNE_end_sequence + Data: 11 +... Added: lldb/trunk/unittests/Symbol/TestLineEntry.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Symbol/TestLineEntry.cpp?rev=360161&view=auto ============================================================================== --- lldb/trunk/unittests/Symbol/TestLineEntry.cpp (added) +++ lldb/trunk/unittests/Symbol/TestLineEntry.cpp Tue May 7 08:37:28 2019 @@ -0,0 +1,235 @@ +//===-- TestLineEntry.cpp ------------------------------*- C++ -*-===// +// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "gtest/gtest.h" +#include <iostream> + +#include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h" +#include "Plugins/SymbolFile/DWARF/DWARFASTParserClang.h" +#include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h" +#include "Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.h" +#include "TestingSupport/TestUtilities.h" +#include "lldb/Symbol/ClangASTContext.h" + +#include "lldb/Core/Module.h" +#include "lldb/Host/FileSystem.h" +#include "lldb/Host/HostInfo.h" +#include "lldb/Symbol/CompileUnit.h" +#include "lldb/Symbol/SymbolContext.h" +#include "lldb/Utility/StreamString.h" + +#include "llvm/Support/FileUtilities.h" +#include "llvm/Support/Program.h" +#include "llvm/Testing/Support/Error.h" + +using namespace lldb_private; +using namespace lldb; + +class LineEntryTest : public testing::Test { +public: + void SetUp() override { + FileSystem::Initialize(); + HostInfo::Initialize(); + ObjectFileMachO::Initialize(); + SymbolVendorMacOSX::Initialize(); + SymbolFileDWARF::Initialize(); + ClangASTContext::Initialize(); + } + + void TearDown() override { + ClangASTContext::Terminate(); + SymbolFileDWARF::Terminate(); + SymbolVendorMacOSX::Terminate(); + ObjectFileMachO::Terminate(); + HostInfo::Terminate(); + FileSystem::Terminate(); + } + +protected: + llvm::Expected<ModuleSP> GetModule(); + llvm::Expected<LineEntry> GetLineEntryForLine(uint32_t line); + ModuleSP m_module_sp; +}; + +llvm::Expected<ModuleSP> LineEntryTest::GetModule() { + if (m_module_sp) + return m_module_sp; + + llvm::SmallString<128> obj; + if (auto ec = llvm::sys::fs::createTemporaryFile("source-%%%%%%", "obj", obj)) + return llvm::errorCodeToError(ec); + llvm::FileRemover obj_remover(obj); + if (auto error = ReadYAMLObjectFile("inlined-functions.yaml", obj)) + return llvm::Error(std::move(error)); + + m_module_sp = std::make_shared<Module>(ModuleSpec(FileSpec(obj))); + // Preload because the temporary file will be gone once we exit this function. + m_module_sp->PreloadSymbols(); + return m_module_sp; +} + +llvm::Expected<LineEntry> LineEntryTest::GetLineEntryForLine(uint32_t line) { + auto expected_module_so = GetModule(); + + if (!expected_module_so) + return llvm::createStringError(llvm::inconvertibleErrorCode(), + "Not able to get module for test object."); + + auto module = expected_module_so->get(); + bool check_inlines = true; + bool exact = true; + SymbolContextList sc_comp_units; + SymbolContextList sc_line_entries; + FileSpec file_spec("inlined-functions.cpp"); + module->ResolveSymbolContextsForFileSpec(file_spec, line, check_inlines, + lldb::eSymbolContextCompUnit, + sc_comp_units); + if (sc_comp_units.GetSize() == 0) + return llvm::createStringError(llvm::inconvertibleErrorCode(), + "No comp unit found on the test object."); + sc_comp_units[0].comp_unit->ResolveSymbolContext( + file_spec, line, check_inlines, exact, eSymbolContextLineEntry, + sc_line_entries); + if (sc_line_entries.GetSize() == 0) + return llvm::createStringError(llvm::inconvertibleErrorCode(), + "No line entry found on the test object."); + return sc_line_entries[0].line_entry; +} + +TEST_F(LineEntryTest, GetSameLineContiguousAddressRangeNoInlines) { + auto line_entry = GetLineEntryForLine(18); + ASSERT_THAT_EXPECTED(line_entry, llvm::Succeeded()); + bool include_inlined_functions = false; + auto range = + line_entry->GetSameLineContiguousAddressRange(include_inlined_functions); + ASSERT_EQ(range.GetByteSize(), (uint64_t)0x24); +} + +TEST_F(LineEntryTest, GetSameLineContiguousAddressRangeOneInline) { + auto line_entry = GetLineEntryForLine(18); + ASSERT_THAT_EXPECTED(line_entry, llvm::Succeeded()); + bool include_inlined_functions = true; + auto range = + line_entry->GetSameLineContiguousAddressRange(include_inlined_functions); + ASSERT_EQ(range.GetByteSize(), (uint64_t)0x49); +} + +TEST_F(LineEntryTest, GetSameLineContiguousAddressRangeNestedInline) { + auto line_entry = GetLineEntryForLine(12); + ASSERT_THAT_EXPECTED(line_entry, llvm::Succeeded()); + bool include_inlined_functions = true; + auto range = + line_entry->GetSameLineContiguousAddressRange(include_inlined_functions); + ASSERT_EQ(range.GetByteSize(), (uint64_t)0x33); +} + +/* +# inlined-functions.cpp +inline __attribute__((always_inline)) int sum2(int a, int b) { + int result = a + b; + return result; +} + +int sum3(int a, int b, int c) { + int result = a + b + c; + return result; +} + +inline __attribute__((always_inline)) int sum4(int a, int b, int c, int d) { + int result = sum2(a, b) + sum2(c, d); + result += 0; + return result; +} + +int main(int argc, char** argv) { + sum3(3, 4, 5) + sum2(1, 2); + int sum = sum4(1, 2, 3, 4); + sum2(5, 6); + return 0; +} + +// g++ -c inlined-functions.cpp -o inlined-functions.o -g -Wno-unused-value +// obj2yaml inlined-functions.o > inlined-functions.yaml + +# Dump of source line per address: +# inlined-functions.cpp is src.cpp for space considerations. +0x20: src.cpp:17 +0x21: src.cpp:17 +0x26: src.cpp:17 +0x27: src.cpp:17 +0x29: src.cpp:17 +0x2e: src.cpp:17 +0x2f: src.cpp:17 +0x31: src.cpp:17 +0x36: src.cpp:18 +0x37: src.cpp:18 +0x39: src.cpp:18 +0x3e: src.cpp:18 +0x3f: src.cpp:18 +0x41: src.cpp:18 +0x46: src.cpp:18 +0x47: src.cpp:18 +0x49: src.cpp:18 +0x4e: src.cpp:18 +0x4f: src.cpp:18 +0x51: src.cpp:18 +0x56: src.cpp:18 +0x57: src.cpp:18 +0x59: src.cpp:18 +0x5e: src.cpp:18 -> s...@src.cpp:2 +0x5f: src.cpp:18 -> s...@src.cpp:2 +0x61: src.cpp:18 -> s...@src.cpp:2 +0x66: src.cpp:18 -> s...@src.cpp:2 +0x67: src.cpp:18 -> s...@src.cpp:2 +0x69: src.cpp:18 -> s...@src.cpp:2 +0x6e: src.cpp:18 -> s...@src.cpp:2 +0x6f: src.cpp:18 -> s...@src.cpp:2 +0x71: src.cpp:18 -> s...@src.cpp:2 +0x76: src.cpp:18 -> s...@src.cpp:2 +0x77: src.cpp:18 -> s...@src.cpp:2 +0x79: src.cpp:18 -> s...@src.cpp:2 +0x7e: src.cpp:18 -> s...@src.cpp:2 +0x7f: src.cpp:19 -> s...@src.cpp:12 +0x81: src.cpp:19 -> s...@src.cpp:12 +0x86: src.cpp:19 -> s...@src.cpp:12 +0x87: src.cpp:19 -> s...@src.cpp:12 +0x89: src.cpp:19 -> s...@src.cpp:12 +0x8e: src.cpp:19 -> s...@src.cpp:12 -> s...@src.cpp:2 +0x8f: src.cpp:19 -> s...@src.cpp:12 -> s...@src.cpp:2 +0x91: src.cpp:19 -> s...@src.cpp:12 -> s...@src.cpp:2 +0x96: src.cpp:19 -> s...@src.cpp:12 -> s...@src.cpp:3 +0x97: src.cpp:19 -> s...@src.cpp:12 +0x99: src.cpp:19 -> s...@src.cpp:12 +0x9e: src.cpp:19 -> s...@src.cpp:12 +0x9f: src.cpp:19 -> s...@src.cpp:12 +0xa1: src.cpp:19 -> s...@src.cpp:12 +0xa6: src.cpp:19 -> s...@src.cpp:12 -> s...@src.cpp:2 +0xa7: src.cpp:19 -> s...@src.cpp:12 -> s...@src.cpp:2 +0xa9: src.cpp:19 -> s...@src.cpp:12 -> s...@src.cpp:2 +0xae: src.cpp:19 -> s...@src.cpp:12 +0xaf: src.cpp:19 -> s...@src.cpp:12 +0xb1: src.cpp:19 -> s...@src.cpp:12 +0xb6: src.cpp:19 -> s...@src.cpp:13 +0xb7: src.cpp:19 -> s...@src.cpp:13 +0xb9: src.cpp:19 -> s...@src.cpp:14 +0xbe: src.cpp:19 +0xbf: src.cpp:19 +0xc1: src.cpp:19 +0xc6: src.cpp:19 +0xc7: src.cpp:19 +0xc9: src.cpp:19 +0xce: src.cpp:20 -> s...@src.cpp:2 +0xcf: src.cpp:20 -> s...@src.cpp:2 +0xd1: src.cpp:20 -> s...@src.cpp:2 +0xd6: src.cpp:21 +0xd7: src.cpp:21 +0xd9: src.cpp:21 +0xde: src.cpp:21 +*/ _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits