diff options
-rw-r--r-- | gdb/ChangeLog | 11 | ||||
-rw-r--r-- | gdb/linespec.c | 97 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/testsuite/gdb.linespec/break-asm-file.c | 35 | ||||
-rw-r--r-- | gdb/testsuite/gdb.linespec/break-asm-file.exp | 55 | ||||
-rw-r--r-- | gdb/testsuite/gdb.linespec/break-asm-file0.s | 218 | ||||
-rw-r--r-- | gdb/testsuite/gdb.linespec/break-asm-file1.s | 244 |
7 files changed, 644 insertions, 24 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2f34a31..ca7c691 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,14 @@ +2014-12-20 Keith Seitz <keiths@redhat.com> + Mihail-Marian Nistor <mihail.nistor@freescale.com> + + PR gdb/17394 + * linespec.c (struct collect_minsyms): Add new member `symtab'. + (add_minsym): Handle cases where info.symtab is non-NULL. + (search_minsyms_for_name): Add new parameter `symtab'. + Handle limiting searches to a specific symtab. + (add_matching_symtabs_to_info): Search through minimal symbols + for language_asm files for which no new symbols are found. + 2014-12-19 Maciej W. Rozycki <macro@codesourcery.com> Nigel Stephens <nigel@mips.com> Chris Dearman <chris@mips.com> diff --git a/gdb/linespec.c b/gdb/linespec.c index 82384ca..ef4173c 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -3448,6 +3448,9 @@ struct collect_minsyms /* The objfile we're examining. */ struct objfile *objfile; + /* Only search the given symtab, or NULL to search for all symbols. */ + struct symtab *symtab; + /* The funfirstline setting from the initial call. */ int funfirstline; @@ -3507,6 +3510,24 @@ add_minsym (struct minimal_symbol *minsym, void *d) mo.minsym = minsym; mo.objfile = info->objfile; + if (info->symtab != NULL) + { + CORE_ADDR pc; + struct symtab_and_line sal; + struct gdbarch *gdbarch = get_objfile_arch (info->objfile); + + sal = find_pc_sect_line (MSYMBOL_VALUE_ADDRESS (info->objfile, minsym), + NULL, 0); + sal.section = MSYMBOL_OBJ_SECTION (info->objfile, minsym); + pc + = gdbarch_convert_from_func_ptr_addr (gdbarch, sal.pc, ¤t_target); + if (pc != sal.pc) + sal = find_pc_sect_line (pc, NULL, 0); + + if (info->symtab != sal.symtab) + return; + } + /* Exclude data symbols when looking for breakpoint locations. */ if (!info->list_mode) switch (minsym->type) @@ -3533,40 +3554,59 @@ add_minsym (struct minimal_symbol *minsym, void *d) VEC_safe_push (bound_minimal_symbol_d, info->msyms, &mo); } -/* Search minimal symbols in all objfiles for NAME. If SEARCH_PSPACE +/* Search for minimal symbols called NAME. If SEARCH_PSPACE is not NULL, the search is restricted to just that program - space. */ + space. + + If SYMTAB is NULL, search all objfiles, otherwise + restrict results to the given SYMTAB. */ static void search_minsyms_for_name (struct collect_info *info, const char *name, - struct program_space *search_pspace) + struct program_space *search_pspace, + struct symtab *symtab) { - struct objfile *objfile; - struct program_space *pspace; + struct collect_minsyms local; + struct cleanup *cleanup; - ALL_PSPACES (pspace) - { - struct collect_minsyms local; - struct cleanup *cleanup; + memset (&local, 0, sizeof (local)); + local.funfirstline = info->state->funfirstline; + local.list_mode = info->state->list_mode; + local.symtab = symtab; - if (search_pspace != NULL && search_pspace != pspace) - continue; - if (pspace->executing_startup) - continue; + cleanup = make_cleanup (VEC_cleanup (bound_minimal_symbol_d), &local.msyms); - set_current_program_space (pspace); + if (symtab == NULL) + { + struct program_space *pspace; - memset (&local, 0, sizeof (local)); - local.funfirstline = info->state->funfirstline; - local.list_mode = info->state->list_mode; + ALL_PSPACES (pspace) + { + struct objfile *objfile; - cleanup = make_cleanup (VEC_cleanup (bound_minimal_symbol_d), - &local.msyms); + if (search_pspace != NULL && search_pspace != pspace) + continue; + if (pspace->executing_startup) + continue; - ALL_OBJFILES (objfile) + set_current_program_space (pspace); + + ALL_OBJFILES (objfile) + { + local.objfile = objfile; + iterate_over_minimal_symbols (objfile, name, add_minsym, &local); + } + } + } + else { - local.objfile = objfile; - iterate_over_minimal_symbols (objfile, name, add_minsym, &local); + if (search_pspace == NULL || SYMTAB_PSPACE (symtab) == search_pspace) + { + set_current_program_space (SYMTAB_PSPACE (symtab)); + local.objfile = SYMTAB_OBJFILE(symtab); + iterate_over_minimal_symbols (local.objfile, name, add_minsym, + &local); + } } if (!VEC_empty (bound_minimal_symbol_d, local.msyms)) @@ -3599,7 +3639,6 @@ search_minsyms_for_name (struct collect_info *info, const char *name, } do_cleanups (cleanup); - } } /* A helper function to add all symbols matching NAME to INFO. If @@ -3621,16 +3660,26 @@ add_matching_symbols_to_info (const char *name, iterate_over_all_matching_symtabs (info->state, name, VAR_DOMAIN, collect_symbols, info, pspace, 1); - search_minsyms_for_name (info, name, pspace); + search_minsyms_for_name (info, name, pspace, NULL); } else if (pspace == NULL || pspace == SYMTAB_PSPACE (elt)) { + int prev_len = VEC_length (symbolp, info->result.symbols); + /* Program spaces that are executing startup should have been filtered out earlier. */ gdb_assert (!SYMTAB_PSPACE (elt)->executing_startup); set_current_program_space (SYMTAB_PSPACE (elt)); iterate_over_file_blocks (elt, name, VAR_DOMAIN, collect_symbols, info); + + /* If no new symbols were found in this iteration and this symtab + is in assembler, we might actually be looking for a label for + which we don't have debug info. Check for a minimal symbol in + this case. */ + if (prev_len == VEC_length (symbolp, info->result.symbols) + && elt->language == language_asm) + search_minsyms_for_name (info, name, pspace, elt); } } } diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 518def1..1f08d80 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-12-20 Mihail-Marian Nistor <mihail.nistor@freescale.com> + + PR gdb/17394 + * gdb.linespec/break-asm-file.c: New file. + * gdb.linespec/break-asm-file.exp: New file. + * gdb.linespec/break-asm-file0.s: New file. + * gdb.linespec/break-asm-file1.s: New file. + 2014-12-18 Nigel Stephens <nigel@mips.com> Maciej W. Rozycki <macro@codesourcery.com> diff --git a/gdb/testsuite/gdb.linespec/break-asm-file.c b/gdb/testsuite/gdb.linespec/break-asm-file.c new file mode 100644 index 0000000..525726b --- /dev/null +++ b/gdb/testsuite/gdb.linespec/break-asm-file.c @@ -0,0 +1,35 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2004-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +void func3(); +void func2(); + +static func() +{ +} + +void func1() +{ + func3(); + func2(); + func(); +} + +int main() +{ + func1(); +} diff --git a/gdb/testsuite/gdb.linespec/break-asm-file.exp b/gdb/testsuite/gdb.linespec/break-asm-file.exp new file mode 100644 index 0000000..de1ed19 --- /dev/null +++ b/gdb/testsuite/gdb.linespec/break-asm-file.exp @@ -0,0 +1,55 @@ +# Copyright 2012-2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Bug 17394 +# Test for break-point at a function only for a selected ASM file. + +load_lib dwarf.exp + +standard_testfile .c +set execfile $testfile +set asm_file1 break-asm-file1.s +set asm_file0 break-asm-file0.s + +# This test can only be run on targets which support DWARF-2 and use gas. +if {![dwarf2_support]} { + return 0 +} + +if {[prepare_for_testing ${testfile}.exp $execfile \ + [list $srcfile $asm_file1 $asm_file0] \ + {debug nowarnings optimize=-O0}]} { + untested "Skipping ${testfile}." + return +} + +clean_restart $execfile + +gdb_test "break a/$asm_file0:func" \ + "Breakpoint 1 at 0x\[0-9a-fA-F\]+: file .*a/$asm_file0, line 7\\\." \ + "set a break-point at a global function only for a selected ASM file." + +gdb_test "delete 1" + +gdb_test "break b/$asm_file0:func" \ + "Breakpoint 2 at 0x\[0-9a-fA-F\]+: file .*b/$asm_file0, line 7\\\." \ + "set a break-point at a function only for a selected ASM file." + +gdb_test "delete 2" + +gdb_test "break $asm_file0:func" \ + "Breakpoint 3 at 0x\[0-9a-fA-F\]+: .*$asm_file0.*(2 locations).*" \ + "set a break-point at function in all instances for a selected ASM file." + diff --git a/gdb/testsuite/gdb.linespec/break-asm-file0.s b/gdb/testsuite/gdb.linespec/break-asm-file0.s new file mode 100644 index 0000000..4d1176c --- /dev/null +++ b/gdb/testsuite/gdb.linespec/break-asm-file0.s @@ -0,0 +1,218 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2004-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + + .file "a/break-asm-file0.s" + .text +.Lbegin_text1: + .globl _func2 +_func2: + .globl func2 + .type func2, %function +func2: +.Lbegin_func2: + .int 0 + .int 0 +.Lend_func2: + .size func2, .-func2 + .globl _func +_func: + .globl func + .type func, %function +func: +.Lbegin_func: + .file 1 "a/break-asm-file0.s" + .int 0 + .int 0 +.Lend_func: + .size func, .-func +.Lend_text1: + +/* Debug information */ + + .section .debug_info +.Lcu1_begin: + /* CU header */ + .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */ +.Lcu1_start: + .2byte 2 /* DWARF Version */ + .4byte .Labbrev1_begin /* Offset into abbrev section */ + .byte 4 /* Pointer size */ + + /* CU die */ + .uleb128 1 /* Abbrev: DW_TAG_compile_unit */ + .4byte .Lline1_begin /* DW_AT_stmt_list */ + .4byte .Lend_text1 /* DW_AT_high_pc */ + .4byte .Lbegin_text1 /* DW_AT_low_pc */ + .ascii "a/break-asm-file0.s\0" /* DW_AT_name */ + .ascii "GNU C 3.3.3\0" /* DW_AT_producer */ + .2byte 0x8001 /* DW_AT_language (Mips Assembler) */ + + .byte 0 /* End of children of CU */ + +.Lcu1_end: + +/* Abbrev table */ + .section .debug_abbrev +.Labbrev1_begin: + .uleb128 1 /* Abbrev code */ + .uleb128 0x11 /* DW_TAG_compile_unit */ + .byte 1 /* has_children */ + .uleb128 0x10 /* DW_AT_stmt_list */ + .uleb128 0x6 /* DW_FORM_data4 */ + .uleb128 0x12 /* DW_AT_high_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x11 /* DW_AT_low_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x25 /* DW_AT_producer */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x13 /* DW_AT_language */ + .uleb128 0x5 /* DW_FORM_data2 */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + + .uleb128 2 /* Abbrev code */ + .uleb128 0x2e /* DW_TAG_subprogram */ + .byte 0 /* has_children */ + .uleb128 0x3f /* DW_AT_external */ + .uleb128 0xc /* DW_FORM_flag */ + .uleb128 0x3a /* DW_AT_decl_file */ + .uleb128 0xb /* DW_FORM_data1 */ + .uleb128 0x3b /* DW_AT_decl_line */ + .uleb128 0xb /* DW_FORM_data1 */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x49 /* DW_AT_type */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .uleb128 0x11 /* DW_AT_low_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x12 /* DW_AT_high_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x40 /* DW_AT_frame_base */ + .uleb128 0xa /* DW_FORM_block1 */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + + .uleb128 3 /* Abbrev code */ + .uleb128 0x24 /* DW_TAG_base_type */ + .byte 0 /* has_children */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0xb /* DW_AT_byte_size */ + .uleb128 0xb /* DW_FORM_data1 */ + .uleb128 0x3e /* DW_AT_encoding */ + .uleb128 0xb /* DW_FORM_data1 */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + +/* Line table */ + .section .debug_line +.Lline1_begin: + .4byte .Lline1_end - .Lline1_start /* Initial length */ +.Lline1_start: + .2byte 2 /* Version */ + .4byte .Lline1_lines - .Lline1_hdr /* header_length */ +.Lline1_hdr: + .byte 1 /* Minimum insn length */ + .byte 1 /* default_is_stmt */ + .byte 1 /* line_base */ + .byte 1 /* line_range */ + .byte 0x10 /* opcode_base */ + + /* Standard lengths */ + .byte 0 + .byte 1 + .byte 1 + .byte 1 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + + /* Include directories */ + .byte 0 + + /* File names */ + .ascii "a/break-asm-file0.s\0" + .uleb128 0 + .uleb128 0 + .uleb128 0 + + .byte 0 + +.Lline1_lines: + .byte 0 /* DW_LNE_set_address */ + .uleb128 5 + .byte 2 + .4byte .Lbegin_func2 + + .byte 3 /* DW_LNS_advance_line */ + .sleb128 1 /* ... to 2 */ + + .byte 1 /* DW_LNS_copy */ + + .byte 0 /* DW_LNE_set_address */ + .uleb128 5 + .byte 2 + .4byte .Lbegin_func2+1 + + .byte 3 /* DW_LNS_advance_line */ + .sleb128 1 /* ... to 3 */ + + .byte 1 /* DW_LNS_copy */ + + .byte 0 /* DW_LNE_set_address */ + .uleb128 5 + .byte 2 + .4byte .Lbegin_func + + .byte 3 /* DW_LNS_advance_line */ + .sleb128 4 /* ... to 7 */ + + .byte 1 /* DW_LNS_copy */ + + .byte 0 /* DW_LNE_set_address */ + .uleb128 5 + .byte 2 + .4byte .Lbegin_func+2 + + .byte 3 /* DW_LNS_advance_line */ + .sleb128 1 /* ... to 8 */ + + .byte 1 /* DW_LNS_copy */ + + .byte 0 /* DW_LNE_set_address */ + .uleb128 5 + .byte 2 + .4byte .Lend_func + + .byte 0 /* DW_LNE_end_of_sequence */ + .uleb128 1 + .byte 1 + +.Lline1_end: diff --git a/gdb/testsuite/gdb.linespec/break-asm-file1.s b/gdb/testsuite/gdb.linespec/break-asm-file1.s new file mode 100644 index 0000000..36bcb86 --- /dev/null +++ b/gdb/testsuite/gdb.linespec/break-asm-file1.s @@ -0,0 +1,244 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2004-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + + .text +.Lbegin_text1: + .globl _func3 +_func3: + .globl func3 + .type func3, %function +func3: +.Lbegin_func3: + .int 0 + .int 0 +.Lend_func3: + .size func3, .-func3 +_func: + .type func, %function +func: +.Lbegin_func: + .int 0 + .int 0 +.Lend_func: + .size func, .-func +.Lend_text1: + +/* Debug information */ + + .section .debug_info +.Lcu1_begin: + /* CU header */ + .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */ +.Lcu1_start: + .2byte 2 /* DWARF Version */ + .4byte .Labbrev1_begin /* Offset into abbrev section */ + .byte 4 /* Pointer size */ + + /* CU die */ + .uleb128 1 /* Abbrev: DW_TAG_compile_unit */ + .4byte .Lline1_begin /* DW_AT_stmt_list */ + .4byte .Lend_text1 /* DW_AT_high_pc */ + .4byte .Lbegin_text1 /* DW_AT_low_pc */ + .ascii "b/break-asm-file0.s\0" /* DW_AT_name */ + .ascii "GNU C 3.3.3\0" /* DW_AT_producer */ + .2byte 0x8001 /* DW_AT_language (Mips Assembler) */ + + /* func3 */ + .uleb128 2 /* Abbrev: DW_TAG_subprogram */ + .byte 1 /* DW_AT_external */ + .byte 1 /* DW_AT_decl_file */ + .byte 2 /* DW_AT_decl_line */ + .ascii "func3\0" /* DW_AT_name */ + .4byte .Ltype_int-.Lcu1_begin /* DW_AT_type */ + .4byte .Lbegin_func3 /* DW_AT_low_pc */ + .4byte .Lend_func3 /* DW_AT_high_pc */ + .byte 1 /* DW_AT_frame_base: length */ + .byte 0x55 /* DW_AT_frame_base: DW_OP_reg5 */ + + /* func */ + .uleb128 2 /* Abbrev: DW_TAG_subprogram */ + .byte 0 /* DW_AT_external */ + .byte 1 /* DW_AT_decl_file */ + .byte 4 /* DW_AT_decl_line */ + .ascii "func\0" /* DW_AT_name */ + .4byte .Ltype_int-.Lcu1_begin /* DW_AT_type */ + .4byte .Lbegin_func /* DW_AT_low_pc */ + .4byte .Lend_func /* DW_AT_high_pc */ + .byte 1 /* DW_AT_frame_base: length */ + .byte 0x55 /* DW_AT_frame_base: DW_OP_reg5 */ + +.Ltype_int: + .uleb128 3 /* Abbrev: DW_TAG_base_type */ + .ascii "int\0" /* DW_AT_name */ + .byte 4 /* DW_AT_byte_size */ + .byte 5 /* DW_AT_encoding */ + + .byte 0 /* End of children of CU */ + +.Lcu1_end: + +/* Abbrev table */ + .section .debug_abbrev +.Labbrev1_begin: + .uleb128 1 /* Abbrev code */ + .uleb128 0x11 /* DW_TAG_compile_unit */ + .byte 1 /* has_children */ + .uleb128 0x10 /* DW_AT_stmt_list */ + .uleb128 0x6 /* DW_FORM_data4 */ + .uleb128 0x12 /* DW_AT_high_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x11 /* DW_AT_low_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x25 /* DW_AT_producer */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x13 /* DW_AT_language */ + .uleb128 0x5 /* DW_FORM_data2 */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + + .uleb128 2 /* Abbrev code */ + .uleb128 0x2e /* DW_TAG_subprogram */ + .byte 0 /* has_children */ + .uleb128 0x3f /* DW_AT_external */ + .uleb128 0xc /* DW_FORM_flag */ + .uleb128 0x3a /* DW_AT_decl_file */ + .uleb128 0xb /* DW_FORM_data1 */ + .uleb128 0x3b /* DW_AT_decl_line */ + .uleb128 0xb /* DW_FORM_data1 */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x49 /* DW_AT_type */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .uleb128 0x11 /* DW_AT_low_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x12 /* DW_AT_high_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x40 /* DW_AT_frame_base */ + .uleb128 0xa /* DW_FORM_block1 */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + + .uleb128 3 /* Abbrev code */ + .uleb128 0x24 /* DW_TAG_base_type */ + .byte 0 /* has_children */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0xb /* DW_AT_byte_size */ + .uleb128 0xb /* DW_FORM_data1 */ + .uleb128 0x3e /* DW_AT_encoding */ + .uleb128 0xb /* DW_FORM_data1 */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + +/* Line table */ + .section .debug_line +.Lline1_begin: + .4byte .Lline1_end - .Lline1_start /* Initial length */ +.Lline1_start: + .2byte 2 /* Version */ + .4byte .Lline1_lines - .Lline1_hdr /* header_length */ +.Lline1_hdr: + .byte 1 /* Minimum insn length */ + .byte 1 /* default_is_stmt */ + .byte 1 /* line_base */ + .byte 1 /* line_range */ + .byte 0x10 /* opcode_base */ + + /* Standard lengths */ + .byte 0 + .byte 1 + .byte 1 + .byte 1 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + + /* Include directories */ + .byte 0 + + /* File names */ + .ascii "b/break-asm-file0.s\0" + .uleb128 0 + .uleb128 0 + .uleb128 0 + + .byte 0 + +.Lline1_lines: + .byte 0 /* DW_LNE_set_address */ + .uleb128 5 + .byte 2 + .4byte .Lbegin_func3 + + .byte 3 /* DW_LNS_advance_line */ + .sleb128 1 /* ... to 2 */ + + .byte 1 /* DW_LNS_copy */ + + .byte 0 /* DW_LNE_set_address */ + .uleb128 5 + .byte 2 + .4byte .Lbegin_func3+1 + + .byte 3 /* DW_LNS_advance_line */ + .sleb128 1 /* ... to 3 */ + + .byte 1 /* DW_LNS_copy */ + + .byte 0 /* DW_LNE_set_address */ + .uleb128 5 + .byte 2 + .4byte .Lbegin_func + + .byte 3 /* DW_LNS_advance_line */ + .sleb128 4 /* ... to 7 */ + + .byte 1 /* DW_LNS_copy */ + + .byte 0 /* DW_LNE_set_address */ + .uleb128 5 + .byte 2 + .4byte .Lbegin_func+1 + + .byte 3 /* DW_LNS_advance_line */ + .sleb128 1 /* ... to 8 */ + + .byte 1 /* DW_LNS_copy */ + + .byte 0 /* DW_LNE_set_address */ + .uleb128 5 + .byte 2 + .4byte .Lend_func + + .byte 0 /* DW_LNE_end_of_sequence */ + .uleb128 1 + .byte 1 + +.Lline1_end: |