binutils-gdb/gdb/testsuite/gdb.dwarf2/dw2-compdir-oldgcc.S
Yao Qi 267418593c [arm] Fix fails in dw2-compdir-oldgcc.exp
This patch fixes two fails in dw2-compdir-oldgcc.exp I've seen on arm
target thumb mode.

  FAIL: gdb.dwarf2/dw2-compdir-oldgcc.exp: info source gcc42
  FAIL: gdb.dwarf2/dw2-compdir-oldgcc.exp: info source gcc43

When fill in DW_AT_low_pc, the label should be used rather than the
function, otherwise, the LSB bit of the address in DW_AT_low_pc is
set and the debug info is wrong.  This patch is to add two labels for
functions gcc42 and gcc43 respectively, and use them.  These two
fails are fixed.

gdb/testsuite:

2014-11-22  Yao Qi  <yao@codesourcery.com>

	* gdb.dwarf2/dw2-compdir-oldgcc.S: Define label .Lgcc42_procstart
	and .Lgcc43_procstart.  Use .Lgcc42_procstart instead of gcc42.
	Use .Lgcc43_procstart instead of gcc43.
2014-11-22 21:22:01 +08:00

232 lines
5.9 KiB
ArmAsm

/* This testcase is part of GDB, the GNU debugger.
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/>. */
.text
main: .globl main
gcc42: .globl gcc42
.Lgcc42_procstart:
.int 0
.type gcc42, %function
.size gcc42, . - gcc42
.Lgcc42_procend:
gcc43: .globl gcc43
.Lgcc43_procstart:
.int 0
.type gcc43, %function
.size gcc43, . - gcc43
.Lgcc43_procend:
/* 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 */
.uleb128 1 /* Abbrev: DW_TAG_compile_unit */
.4byte .Lgcc42_begin /* DW_AT_stmt_list */
.4byte .Lgcc42_procstart /* DW_AT_low_pc */
.4byte .Lgcc42_procend /* DW_AT_high_pc */
.ascii "/dir/d/dw2-compdir-oldgcc42.S\0" /* DW_AT_name */
.ascii "GNU C 4.2.0\0" /* DW_AT_producer */
.byte 1 /* DW_AT_language (C) */
.uleb128 2 /* Abbrev: DW_TAG_subprogram */
.byte 1 /* DW_AT_external */
.byte 1 /* DW_AT_decl_file */
.byte 1 /* DW_AT_decl_line */
.ascii "gcc42\0" /* DW_AT_name */
.4byte .Lgcc42_procstart /* DW_AT_low_pc */
.4byte .Lgcc42_procend /* DW_AT_high_pc */
.byte 0 /* End of children of CU */
.Lcu1_end:
.Lcu2_begin:
/* CU header */
.4byte .Lcu2_end - .Lcu2_start /* Length of Compilation Unit */
.Lcu2_start:
.2byte 2 /* DWARF Version */
.4byte .Labbrev1_begin /* Offset into abbrev section */
.byte 4 /* Pointer size */
.uleb128 1 /* Abbrev: DW_TAG_compile_unit */
.4byte .Lgcc43_begin /* DW_AT_stmt_list */
.4byte .Lgcc43_procstart /* DW_AT_low_pc */
.4byte .Lgcc43_procend /* DW_AT_high_pc */
.ascii "/dir/d/dw2-compdir-oldgcc43.S\0" /* DW_AT_name */
.ascii "GNU C 4.3.0\0" /* DW_AT_producer */
.byte 1 /* DW_AT_language (C) */
.uleb128 2 /* Abbrev: DW_TAG_subprogram */
.byte 1 /* DW_AT_external */
.byte 1 /* DW_AT_decl_file */
.byte 1 /* DW_AT_decl_line */
.ascii "gcc43\0" /* DW_AT_name */
.4byte .Lgcc43_procstart /* DW_AT_low_pc */
.4byte .Lgcc43_procend /* DW_AT_high_pc */
.byte 0 /* End of children of CU */
.Lcu2_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 0x11 /* DW_AT_low_pc */
.uleb128 0x1 /* DW_FORM_addr */
.uleb128 0x12 /* DW_AT_high_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 0xb /* DW_FORM_data1 */
.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 0x11 /* DW_AT_low_pc */
.uleb128 0x1 /* DW_FORM_addr */
.uleb128 0x12 /* DW_AT_high_pc */
.uleb128 0x1 /* DW_FORM_addr */
.byte 0x0 /* Terminator */
.byte 0x0 /* Terminator */
.byte 0x0 /* Terminator */
.byte 0x0 /* Terminator */
/* Line table */
.section .debug_line
.Lgcc42_begin:
.4byte .Lgcc42_end - .Lgcc42_start /* Initial length */
.Lgcc42_start:
.2byte 2 /* Version */
.4byte .Lgcc42_lines - .Lgcc42_hdr /* header_length */
.Lgcc42_hdr:
.byte 1 /* Minimum insn length */
.byte 1 /* default_is_stmt */
.byte 1 /* line_base */
.byte 1 /* line_range */
.byte 4 /* opcode_base */
/* Standard lengths */
.byte 0
.byte 1
.byte 1
/* Include directories */
.byte 0
/* File names */
.ascii "dw2-compdir-oldgcc42.S\0"
.uleb128 0 /* directory */
.uleb128 0
.uleb128 0
.byte 0
.Lgcc42_lines:
.byte 0 /* DW_LNE_set_address */
.uleb128 5
.byte 2
.4byte gcc42
.byte 3 /* DW_LNS_advance_line */
.sleb128 41 /* ... to 42 */
.byte 1 /* DW_LNS_copy */
.byte 0 /* DW_LNE_set_address */
.uleb128 5
.byte 2
.4byte .Lgcc42_procend
.byte 0 /* DW_LNE_end_of_sequence */
.uleb128 1
.byte 1
.Lgcc42_end:
.Lgcc43_begin:
.4byte .Lgcc43_end - .Lgcc43_start /* Initial length */
.Lgcc43_start:
.2byte 2 /* Version */
.4byte .Lgcc43_lines - .Lgcc43_hdr /* header_length */
.Lgcc43_hdr:
.byte 1 /* Minimum insn length */
.byte 1 /* default_is_stmt */
.byte 1 /* line_base */
.byte 1 /* line_range */
.byte 4 /* opcode_base */
/* Standard lengths */
.byte 0
.byte 1
.byte 1
/* Include directories */
.byte 0
/* File names */
.ascii "dw2-compdir-oldgcc43.S\0"
.uleb128 0 /* directory */
.uleb128 0
.uleb128 0
.byte 0
.Lgcc43_lines:
.byte 0 /* DW_LNE_set_address */
.uleb128 5
.byte 2
.4byte gcc43
.byte 3 /* DW_LNS_advance_line */
.sleb128 42 /* ... to 43 */
.byte 1 /* DW_LNS_copy */
.byte 0 /* DW_LNE_set_address */
.uleb128 5
.byte 2
.4byte .Lgcc43_procend
.byte 0 /* DW_LNE_end_of_sequence */
.uleb128 1
.byte 1
.Lgcc43_end: