diff mbox

gdb: Handle multiple base address in debug_ranges data.

Message ID 81cb8e0b755217ed2ea2afdffb3a5c44421b72cd.1444985270.git.andrew.burgess@embecosm.com
State New
Headers show

Commit Message

Andrew Burgess Oct. 16, 2015, 8:50 a.m. UTC
It is possible to use multiple base addresses within a single address
range series, within the .debug_ranges section.  The following is a
simplified example for 32-bit addresses:

  .section ".debug_ranges"
  .4byte	0xffffffff
  .4byte        BASE_1
  .4byte	START_OFFSET_1
  .4byte	END_OFFSET_1
  .4byte	START_OFFSET_2
  .4byte	END_OFFSET_2
  .4byte	0xffffffff
  .4byte        BASE_2
  .4byte	START_OFFSET_3
  .4byte	END_OFFSET_3
  .4byte	0
  .4byte	0

In this example START/END 1 and 2 are relative to BASE_1, while
START/END 3 are relative to BASE_2.

Currently gdb does not correctly parse this DWARF, resulting in
corrupted address range information.  This commit fixes this issue, and
adds a new test to cover this case.

gdb/ChangeLog:

	* dwarf2read.c (dwarf2_ranges_read): Unify and fix base address
	reading code.

gdb/testsuite/ChangeLog:

	* gdb.arch/amd64-debug-ranges-base.c: New file.
	* gdb.arch/amd64-debug-ranges-base.exp: New file.
	* gdb.arch/amd64-debug-ranges-base.s: New file.
---
 gdb/ChangeLog                                      |    5 +
 gdb/dwarf2read.c                                   |   19 +-
 gdb/testsuite/ChangeLog                            |    6 +
 gdb/testsuite/gdb.arch/amd64-debug-ranges-base.c   |   34 +
 gdb/testsuite/gdb.arch/amd64-debug-ranges-base.exp |   39 +
 gdb/testsuite/gdb.arch/amd64-debug-ranges-base.s   | 1540 ++++++++++++++++++++
 6 files changed, 1627 insertions(+), 16 deletions(-)
 create mode 100644 gdb/testsuite/gdb.arch/amd64-debug-ranges-base.c
 create mode 100644 gdb/testsuite/gdb.arch/amd64-debug-ranges-base.exp
 create mode 100644 gdb/testsuite/gdb.arch/amd64-debug-ranges-base.s

Comments

Doug Evans Oct. 26, 2015, 1:57 a.m. UTC | #1
Andrew Burgess <andrew.burgess@embecosm.com> writes:
> It is possible to use multiple base addresses within a single address
> range series, within the .debug_ranges section.  The following is a
> simplified example for 32-bit addresses:
>
>   .section ".debug_ranges"
>   .4byte	0xffffffff
>   .4byte        BASE_1
>   .4byte	START_OFFSET_1
>   .4byte	END_OFFSET_1
>   .4byte	START_OFFSET_2
>   .4byte	END_OFFSET_2
>   .4byte	0xffffffff
>   .4byte        BASE_2
>   .4byte	START_OFFSET_3
>   .4byte	END_OFFSET_3
>   .4byte	0
>   .4byte	0
>
> In this example START/END 1 and 2 are relative to BASE_1, while
> START/END 3 are relative to BASE_2.
>
> Currently gdb does not correctly parse this DWARF, resulting in
> corrupted address range information.  This commit fixes this issue, and
> adds a new test to cover this case.
>
> gdb/ChangeLog:
>
> 	* dwarf2read.c (dwarf2_ranges_read): Unify and fix base address
> 	reading code.
>
> gdb/testsuite/ChangeLog:
>
> 	* gdb.arch/amd64-debug-ranges-base.c: New file.
> 	* gdb.arch/amd64-debug-ranges-base.exp: New file.
> 	* gdb.arch/amd64-debug-ranges-base.s: New file.

Hi.

The code patch is fine with me, nice find.

IWBN to enhance the dwarf assembler (testsuite/lib/dwarf.exp)
to handle .debug_ranges. The more we get away from checking in
generated assembler the better.
Can do?
If not, I'll volunteer to take that on, but I can't promise to
get to it this week. .debug_ranges is pretty simple so I think(!)
this will be easy.

[Though if we go with the generated assembler, take out the 3 in -g3.
I mention this more for completeness sake though, as I'd really like
to see if we can do this with the dwarf assembler first.]

>
> diff --git a/gdb/ChangeLog b/gdb/ChangeLog
> index 8646e6d..d5649d1 100644
> --- a/gdb/ChangeLog
> +++ b/gdb/ChangeLog
> @@ -1,3 +1,8 @@
> +2015-10-15  Andrew Burgess  <andrew.burgess@embecosm.com>
> +
> +	* dwarf2read.c (dwarf2_ranges_read): Unify and fix base address
> +	reading code.
> +
>  2015-10-15  Yao Qi  <yao.qi@linaro.org>
>  
>  	* aarch64-linux-nat.c (aarch64_linux_insert_hw_breakpoint):
> diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
> index 0c45d29..e75d5bb 100644
> --- a/gdb/dwarf2read.c
> +++ b/gdb/dwarf2read.c
> @@ -11894,7 +11894,6 @@ dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
>    int found_base;
>    unsigned int dummy;
>    const gdb_byte *buffer;
> -  CORE_ADDR marker;
>    int low_set;
>    CORE_ADDR low = 0;
>    CORE_ADDR high = 0;
> @@ -11913,18 +11912,6 @@ dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
>      }
>    buffer = dwarf2_per_objfile->ranges.buffer + offset;
>  
> -  /* Read in the largest possible address.  */
> -  marker = read_address (obfd, buffer, cu, &dummy);
> -  if ((marker & mask) == mask)
> -    {
> -      /* If we found the largest possible address, then
> -	 read the base address.  */
> -      base = read_address (obfd, buffer + addr_size, cu, &dummy);
> -      buffer += 2 * addr_size;
> -      offset += 2 * addr_size;
> -      found_base = 1;
> -    }
> -
>    low_set = 0;
>  
>    baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
> @@ -11949,9 +11936,9 @@ dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
>  	 the base address.  Check for a base address here.  */
>        if ((range_beginning & mask) == mask)
>  	{
> -	  /* If we found the largest possible address, then
> -	     read the base address.  */
> -	  base = read_address (obfd, buffer + addr_size, cu, &dummy);
> +	  /* If we found the largest possible address, then we already
> +	     have the base address in range_end.  */
> +	  base = range_end;
>  	  found_base = 1;
>  	  continue;
>  	}
> diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
> index 74aa6ae..1587ac6 100644
> --- a/gdb/testsuite/ChangeLog
> +++ b/gdb/testsuite/ChangeLog
> @@ -1,3 +1,9 @@
> +2015-10-16  Andrew Burgess  <andrew.burgess@embecosm.com>
> +
> +	* gdb.arch/amd64-debug-ranges-base.c: New file.
> +	* gdb.arch/amd64-debug-ranges-base.exp: New file.
> +	* gdb.arch/amd64-debug-ranges-base.s: New file.
> +
>  2015-10-12  Andrew Burgess  <andrew.burgess@embecosm.com>
>  
>  	* gdb.base/dbx.exp (test_func): Remove xfails, update expected
> diff --git a/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.c b/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.c
> new file mode 100644
> index 0000000..7d2f7da
> --- /dev/null
> +++ b/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.c
> @@ -0,0 +1,34 @@
> +/* This testcase is part of GDB, the GNU debugger.
> +
> +   Copyright 2015 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/>.  */
> +
> +int __attribute__ ((section (".text.3")))
> +frame3 (void)
> +{
> +  return 0;
> +}
> +
> +int __attribute__ ((section (".text.2")))
> +frame2 (void)
> +{
> +  return 0;
> +}
> +
> +int __attribute__ ((section (".text.1")))
> +main (void)
> +{
> +  return frame2 ();
> +}
> diff --git a/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.exp b/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.exp
> new file mode 100644
> index 0000000..cee494d
> --- /dev/null
> +++ b/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.exp
> @@ -0,0 +1,39 @@
> +# Copyright (C) 2015 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/>.
> +
> +standard_testfile .s
> +set opts {}
> +
> +if [info exists COMPILE] {
> +    # make check RUNTESTFLAGS="gdb.arch/amd64-entry-value.exp COMPILE=1"
> +    set srcfile ${testfile}.cc
> +    lappend opts debug optimize=-O2
> +} elseif { ![istarget x86_64-*-* ] || ![is_lp64_target] } {
> +    verbose "Skipping amd64-debug-ranges-base."
> +    return
> +}
> +
> +if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} $opts] } {
> +    return -1
> +}
> +
> +if ![runto_main] {
> +    return -1
> +}
> +
> +gdb_test "info line main" "Line \[0-9\]* of .* starts at address .* and ends at .*"
> +gdb_test "info line frame2" "Line \[0-9\]* of .* starts at address .* and ends at .*"
> +gdb_test "info line frame3" "Line \[0-9\]* of .* starts at address .* and ends at .*"
> +
> diff --git a/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.s b/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.s
> new file mode 100644
> index 0000000..d672b4d
> --- /dev/null
> +++ b/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.s
> @@ -0,0 +1,1540 @@
> +/* This testcase is part of GDB, the GNU debugger.
> +
> +   Copyright 2015 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/>.  */
> +
> +/* This file is compiled from gdb.arch/amd64-debug-ranges-base.c
> +   using '-g3 -O0 -S', after which the .debug_ranges sections was
> +   re-written by hand in order to contain the required (valid) DWARF.  */
> +
> +        .file	"amd64-debug-ranges-base.c"
> +	.text
> +.Ltext0:
> +	.section	.text.3,"ax",@progbits
> +	.globl	frame3
> +	.type	frame3, @function
> +frame3:
> +.LFB0:
> +	.file 1 "amd64-debug-ranges-base.c"
> +	.loc 1 20 0
> +	.cfi_startproc
> +	pushq	%rbp
> +	.cfi_def_cfa_offset 16
> +	.cfi_offset 6, -16
> +	movq	%rsp, %rbp
> +	.cfi_def_cfa_register 6
> +	.loc 1 21 0
> +	movl	$0, %eax
> +	.loc 1 22 0
> +	popq	%rbp
> +	.cfi_def_cfa 7, 8
> +	ret
> +	.cfi_endproc
> +.LFE0:
> +	.size	frame3, .-frame3
> +	.section	.text.2,"ax",@progbits
> +	.globl	frame2
> +	.type	frame2, @function
> +frame2:
> +.LFB1:
> +	.loc 1 26 0
> +	.cfi_startproc
> +	pushq	%rbp
> +	.cfi_def_cfa_offset 16
> +	.cfi_offset 6, -16
> +	movq	%rsp, %rbp
> +	.cfi_def_cfa_register 6
> +	.loc 1 27 0
> +	movl	$0, %eax
> +	.loc 1 28 0
> +	popq	%rbp
> +	.cfi_def_cfa 7, 8
> +	ret
> +	.cfi_endproc
> +.LFE1:
> +	.size	frame2, .-frame2
> +	.section	.text.1,"ax",@progbits
> +	.globl	main
> +	.type	main, @function
> +main:
> +.LFB2:
> +	.loc 1 32 0
> +	.cfi_startproc
> +	pushq	%rbp
> +	.cfi_def_cfa_offset 16
> +	.cfi_offset 6, -16
> +	movq	%rsp, %rbp
> +	.cfi_def_cfa_register 6
> +	.loc 1 33 0
> +	call	frame2
> +	.loc 1 34 0
> +	popq	%rbp
> +	.cfi_def_cfa 7, 8
> +	ret
> +	.cfi_endproc
> +.LFE2:
> +	.size	main, .-main
> +	.text
> +.Letext0:
> +	.section	.debug_info,"",@progbits
> +.Ldebug_info0:
> +	.long	0x88
> +	.value	0x4
> +	.long	.Ldebug_abbrev0
> +	.byte	0x8
> +	.uleb128 0x1
> +	.long	.LASF251
> +	.byte	0xc
> +	.long	.LASF252
> +	.long	.LASF253
> +	.long	.Ldebug_ranges0+0
> +	.quad	0
> +	.long	.Ldebug_line0
> +	.long	.Ldebug_macro0
> +	.uleb128 0x2
> +	.long	.LASF248
> +	.byte	0x1
> +	.byte	0x13
> +	.long	0x4a
> +	.quad	.LFB0
> +	.quad	.LFE0-.LFB0
> +	.uleb128 0x1
> +	.byte	0x9c
> +	.uleb128 0x3
> +	.byte	0x4
> +	.byte	0x5
> +	.string	"int"
> +	.uleb128 0x2
> +	.long	.LASF249
> +	.byte	0x1
> +	.byte	0x19
> +	.long	0x4a
> +	.quad	.LFB1
> +	.quad	.LFE1-.LFB1
> +	.uleb128 0x1
> +	.byte	0x9c
> +	.uleb128 0x4
> +	.long	.LASF250
> +	.byte	0x1
> +	.byte	0x1f
> +	.long	0x4a
> +	.quad	.LFB2
> +	.quad	.LFE2-.LFB2
> +	.uleb128 0x1
> +	.byte	0x9c
> +	.byte	0
> +	.section	.debug_abbrev,"",@progbits
> +.Ldebug_abbrev0:
> +	.uleb128 0x1
> +	.uleb128 0x11
> +	.byte	0x1
> +	.uleb128 0x25
> +	.uleb128 0xe
> +	.uleb128 0x13
> +	.uleb128 0xb
> +	.uleb128 0x3
> +	.uleb128 0xe
> +	.uleb128 0x1b
> +	.uleb128 0xe
> +	.uleb128 0x55
> +	.uleb128 0x17
> +	.uleb128 0x11
> +	.uleb128 0x1
> +	.uleb128 0x10
> +	.uleb128 0x17
> +	.uleb128 0x2119
> +	.uleb128 0x17
> +	.byte	0
> +	.byte	0
> +	.uleb128 0x2
> +	.uleb128 0x2e
> +	.byte	0
> +	.uleb128 0x3f
> +	.uleb128 0x19
> +	.uleb128 0x3
> +	.uleb128 0xe
> +	.uleb128 0x3a
> +	.uleb128 0xb
> +	.uleb128 0x3b
> +	.uleb128 0xb
> +	.uleb128 0x27
> +	.uleb128 0x19
> +	.uleb128 0x49
> +	.uleb128 0x13
> +	.uleb128 0x11
> +	.uleb128 0x1
> +	.uleb128 0x12
> +	.uleb128 0x7
> +	.uleb128 0x40
> +	.uleb128 0x18
> +	.uleb128 0x2117
> +	.uleb128 0x19
> +	.byte	0
> +	.byte	0
> +	.uleb128 0x3
> +	.uleb128 0x24
> +	.byte	0
> +	.uleb128 0xb
> +	.uleb128 0xb
> +	.uleb128 0x3e
> +	.uleb128 0xb
> +	.uleb128 0x3
> +	.uleb128 0x8
> +	.byte	0
> +	.byte	0
> +	.uleb128 0x4
> +	.uleb128 0x2e
> +	.byte	0
> +	.uleb128 0x3f
> +	.uleb128 0x19
> +	.uleb128 0x3
> +	.uleb128 0xe
> +	.uleb128 0x3a
> +	.uleb128 0xb
> +	.uleb128 0x3b
> +	.uleb128 0xb
> +	.uleb128 0x27
> +	.uleb128 0x19
> +	.uleb128 0x49
> +	.uleb128 0x13
> +	.uleb128 0x11
> +	.uleb128 0x1
> +	.uleb128 0x12
> +	.uleb128 0x7
> +	.uleb128 0x40
> +	.uleb128 0x18
> +	.uleb128 0x2116
> +	.uleb128 0x19
> +	.byte	0
> +	.byte	0
> +	.byte	0
> +	.section	.debug_aranges,"",@progbits
> +	.long	0x4c
> +	.value	0x2
> +	.long	.Ldebug_info0
> +	.byte	0x8
> +	.byte	0
> +	.value	0
> +	.value	0
> +	.quad	.LFB0
> +	.quad	.LFE0-.LFB0
> +	.quad	.LFB1
> +	.quad	.LFE1-.LFB1
> +	.quad	.LFB2
> +	.quad	.LFE2-.LFB2
> +	.quad	0
> +	.quad	0
> +	.section	.debug_ranges,"",@progbits
> +.Ldebug_ranges0:
> +	.quad	0xffffffffffffffff
> +	.quad	.LFB0
> +	.quad	0
> +	.quad	.LFE0 - .LFB0
> +	.quad	0xffffffffffffffff
> +	.quad	.LFB1
> +	.quad	0
> +	.quad	.LFE1 - .LFB1
> +	.quad	0xffffffffffffffff
> +	.quad	.LFB2
> +	.quad	0
> +	.quad	.LFE2 - .LFB2
> +	.quad	0
> +	.quad	0
> +	.section	.debug_macro,"",@progbits
> +.Ldebug_macro0:
> +	.value	0x4
> +	.byte	0x2
> +	.long	.Ldebug_line0
> +	.byte	0x7
> +	.long	.Ldebug_macro1
> +	.byte	0x3
> +	.uleb128 0
> +	.uleb128 0x1
> +	.file 2 "/usr/include/stdc-predef.h"
> +	.byte	0x3
> +	.uleb128 0
> +	.uleb128 0x2
> +	.byte	0x7
> +	.long	.Ldebug_macro2
> +	.byte	0x4
> +	.byte	0x4
> +	.byte	0
> +	.section	.debug_macro,"G",@progbits,wm4.0.9fc6967513006a990da6a9952cf266ea,comdat
> +.Ldebug_macro1:
> +	.value	0x4
> +	.byte	0
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF0
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF1
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF2
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF3
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF4
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF5
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF6
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF7
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF8
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF9
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF10
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF11
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF12
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF13
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF14
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF15
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF16
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF17
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF18
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF19
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF20
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF21
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF22
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF23
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF24
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF25
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF26
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF27
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF28
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF29
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF30
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF31
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF32
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF33
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF34
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF35
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF36
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF37
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF38
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF39
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF40
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF41
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF42
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF43
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF44
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF45
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF46
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF47
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF48
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF49
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF50
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF51
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF52
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF53
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF54
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF55
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF56
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF57
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF58
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF59
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF60
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF61
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF62
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF63
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF64
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF65
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF66
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF67
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF68
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF69
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF70
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF71
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF72
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF73
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF74
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF75
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF76
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF77
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF78
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF79
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF80
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF81
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF82
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF83
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF84
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF85
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF86
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF87
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF88
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF89
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF90
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF91
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF92
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF93
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF94
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF95
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF96
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF97
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF98
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF99
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF100
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF101
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF102
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF103
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF104
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF105
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF106
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF107
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF108
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF109
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF110
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF111
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF112
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF113
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF114
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF115
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF116
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF117
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF118
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF119
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF120
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF121
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF122
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF123
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF124
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF125
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF126
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF127
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF128
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF129
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF130
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF131
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF132
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF133
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF134
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF135
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF136
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF137
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF138
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF139
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF140
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF141
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF142
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF143
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF144
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF145
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF146
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF147
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF148
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF149
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF150
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF151
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF152
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF153
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF154
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF155
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF156
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF157
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF158
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF159
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF160
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF161
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF162
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF163
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF164
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF165
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF166
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF167
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF168
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF169
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF170
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF171
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF172
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF173
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF174
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF175
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF176
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF177
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF178
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF179
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF180
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF181
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF182
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF183
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF184
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF185
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF186
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF187
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF188
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF189
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF190
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF191
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF192
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF193
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF194
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF195
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF196
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF197
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF198
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF199
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF200
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF201
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF202
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF203
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF204
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF205
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF206
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF207
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF208
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF209
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF210
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF211
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF212
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF213
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF214
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF215
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF216
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF217
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF218
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF219
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF220
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF221
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF222
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF223
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF224
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF225
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF226
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF227
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF228
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF229
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF230
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF231
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF232
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF233
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF234
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF235
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF236
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF237
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF238
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF239
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF240
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF241
> +	.byte	0x5
> +	.uleb128 0
> +	.long	.LASF242
> +	.byte	0
> +	.section	.debug_macro,"G",@progbits,wm4.stdcpredef.h.19.52894a18705f0664f8da17e99c6c0a93,comdat
> +.Ldebug_macro2:
> +	.value	0x4
> +	.byte	0
> +	.byte	0x5
> +	.uleb128 0x13
> +	.long	.LASF243
> +	.byte	0x5
> +	.uleb128 0x26
> +	.long	.LASF244
> +	.byte	0x5
> +	.uleb128 0x2e
> +	.long	.LASF245
> +	.byte	0x5
> +	.uleb128 0x3b
> +	.long	.LASF246
> +	.byte	0x5
> +	.uleb128 0x3e
> +	.long	.LASF247
> +	.byte	0
> +	.section	.debug_line,"",@progbits
> +.Ldebug_line0:
> +	.section	.debug_str,"MS",@progbits,1
> +.LASF106:
> +	.string	"__UINT_LEAST8_MAX__ 0xff"
> +.LASF153:
> +	.string	"__DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L)"
> +.LASF218:
> +	.string	"__amd64__ 1"
> +.LASF235:
> +	.string	"__linux 1"
> +.LASF110:
> +	.string	"__UINT_LEAST32_MAX__ 0xffffffffU"
> +.LASF26:
> +	.string	"__SIZEOF_SIZE_T__ 8"
> +.LASF8:
> +	.string	"__VERSION__ \"5.1.1 20150618 (Red Hat 5.1.1-4)\""
> +.LASF1:
> +	.string	"__STDC_VERSION__ 201112L"
> +.LASF34:
> +	.string	"__SIZEOF_POINTER__ 8"
> +.LASF252:
> +	.string	"amd64-debug-ranges-base.c"
> +.LASF178:
> +	.string	"__DEC64_MANT_DIG__ 16"
> +.LASF128:
> +	.string	"__FLT_RADIX__ 2"
> +.LASF165:
> +	.string	"__LDBL_MIN__ 3.36210314311209350626e-4932L"
> +.LASF239:
> +	.string	"__unix__ 1"
> +.LASF133:
> +	.string	"__FLT_MAX_EXP__ 128"
> +.LASF162:
> +	.string	"__LDBL_MAX_10_EXP__ 4932"
> +.LASF215:
> +	.string	"__SIZEOF_WINT_T__ 4"
> +.LASF148:
> +	.string	"__DBL_MAX_10_EXP__ 308"
> +.LASF121:
> +	.string	"__UINT_FAST64_MAX__ 0xffffffffffffffffUL"
> +.LASF217:
> +	.string	"__amd64 1"
> +.LASF38:
> +	.string	"__WINT_TYPE__ unsigned int"
> +.LASF113:
> +	.string	"__UINT64_C(c) c ## UL"
> +.LASF155:
> +	.string	"__DBL_HAS_INFINITY__ 1"
> +.LASF233:
> +	.string	"__SSE2_MATH__ 1"
> +.LASF7:
> +	.string	"__GNUC_PATCHLEVEL__ 1"
> +.LASF236:
> +	.string	"__linux__ 1"
> +.LASF4:
> +	.string	"__STDC_HOSTED__ 1"
> +.LASF81:
> +	.string	"__WINT_MIN__ 0U"
> +.LASF222:
> +	.string	"__SIZEOF_FLOAT128__ 16"
> +.LASF246:
> +	.string	"__STDC_ISO_10646__ 201304L"
> +.LASF50:
> +	.string	"__UINT32_TYPE__ unsigned int"
> +.LASF231:
> +	.string	"__FXSR__ 1"
> +.LASF184:
> +	.string	"__DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD"
> +.LASF136:
> +	.string	"__FLT_MAX__ 3.40282346638528859812e+38F"
> +.LASF253:
> +	.string	"/path/to/binutils-gdb/src/gdb/testsuite/gdb.arch"
> +.LASF237:
> +	.string	"linux 1"
> +.LASF114:
> +	.string	"__INT_FAST8_MAX__ 0x7f"
> +.LASF156:
> +	.string	"__DBL_HAS_QUIET_NAN__ 1"
> +.LASF143:
> +	.string	"__DBL_MANT_DIG__ 53"
> +.LASF48:
> +	.string	"__UINT8_TYPE__ unsigned char"
> +.LASF173:
> +	.string	"__DEC32_MAX_EXP__ 97"
> +.LASF46:
> +	.string	"__INT32_TYPE__ int"
> +.LASF43:
> +	.string	"__SIG_ATOMIC_TYPE__ int"
> +.LASF145:
> +	.string	"__DBL_MIN_EXP__ (-1021)"
> +.LASF169:
> +	.string	"__LDBL_HAS_INFINITY__ 1"
> +.LASF20:
> +	.string	"__SIZEOF_LONG__ 8"
> +.LASF140:
> +	.string	"__FLT_HAS_DENORM__ 1"
> +.LASF95:
> +	.string	"__UINT16_MAX__ 0xffff"
> +.LASF204:
> +	.string	"__GCC_ATOMIC_WCHAR_T_LOCK_FREE 2"
> +.LASF67:
> +	.string	"__UINT_FAST64_TYPE__ long unsigned int"
> +.LASF123:
> +	.string	"__UINTPTR_MAX__ 0xffffffffffffffffUL"
> +.LASF33:
> +	.string	"__FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__"
> +.LASF108:
> +	.string	"__UINT_LEAST16_MAX__ 0xffff"
> +.LASF212:
> +	.string	"__PRAGMA_REDEFINE_EXTNAME 1"
> +.LASF53:
> +	.string	"__INT_LEAST16_TYPE__ short int"
> +.LASF18:
> +	.string	"__LP64__ 1"
> +.LASF163:
> +	.string	"__DECIMAL_DIG__ 21"
> +.LASF71:
> +	.string	"__has_include_next(STR) __has_include_next__(STR)"
> +.LASF122:
> +	.string	"__INTPTR_MAX__ 0x7fffffffffffffffL"
> +.LASF234:
> +	.string	"__gnu_linux__ 1"
> +.LASF150:
> +	.string	"__DBL_MAX__ ((double)1.79769313486231570815e+308L)"
> +.LASF45:
> +	.string	"__INT16_TYPE__ short int"
> +.LASF170:
> +	.string	"__LDBL_HAS_QUIET_NAN__ 1"
> +.LASF24:
> +	.string	"__SIZEOF_DOUBLE__ 8"
> +.LASF94:
> +	.string	"__UINT8_MAX__ 0xff"
> +.LASF17:
> +	.string	"_LP64 1"
> +.LASF51:
> +	.string	"__UINT64_TYPE__ long unsigned int"
> +.LASF54:
> +	.string	"__INT_LEAST32_TYPE__ int"
> +.LASF93:
> +	.string	"__INT64_MAX__ 0x7fffffffffffffffL"
> +.LASF224:
> +	.string	"__ATOMIC_HLE_RELEASE 131072"
> +.LASF230:
> +	.string	"__SSE2__ 1"
> +.LASF85:
> +	.string	"__INTMAX_C(c) c ## L"
> +.LASF203:
> +	.string	"__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2"
> +.LASF213:
> +	.string	"__SIZEOF_INT128__ 16"
> +.LASF36:
> +	.string	"__PTRDIFF_TYPE__ long int"
> +.LASF174:
> +	.string	"__DEC32_MIN__ 1E-95DF"
> +.LASF99:
> +	.string	"__INT8_C(c) c"
> +.LASF21:
> +	.string	"__SIZEOF_LONG_LONG__ 8"
> +.LASF130:
> +	.string	"__FLT_DIG__ 6"
> +.LASF214:
> +	.string	"__SIZEOF_WCHAR_T__ 4"
> +.LASF105:
> +	.string	"__INT64_C(c) c ## L"
> +.LASF119:
> +	.string	"__UINT_FAST16_MAX__ 0xffffffffffffffffUL"
> +.LASF134:
> +	.string	"__FLT_MAX_10_EXP__ 38"
> +.LASF137:
> +	.string	"__FLT_MIN__ 1.17549435082228750797e-38F"
> +.LASF59:
> +	.string	"__UINT_LEAST64_TYPE__ long unsigned int"
> +.LASF25:
> +	.string	"__SIZEOF_LONG_DOUBLE__ 16"
> +.LASF73:
> +	.string	"__SCHAR_MAX__ 0x7f"
> +.LASF6:
> +	.string	"__GNUC_MINOR__ 1"
> +.LASF55:
> +	.string	"__INT_LEAST64_TYPE__ long int"
> +.LASF127:
> +	.string	"__DEC_EVAL_METHOD__ 2"
> +.LASF175:
> +	.string	"__DEC32_MAX__ 9.999999E96DF"
> +.LASF77:
> +	.string	"__LONG_LONG_MAX__ 0x7fffffffffffffffLL"
> +.LASF200:
> +	.string	"__GCC_ATOMIC_BOOL_LOCK_FREE 2"
> +.LASF35:
> +	.string	"__SIZE_TYPE__ long unsigned int"
> +.LASF159:
> +	.string	"__LDBL_MIN_EXP__ (-16381)"
> +.LASF125:
> +	.string	"__GCC_IEC_559_COMPLEX 2"
> +.LASF142:
> +	.string	"__FLT_HAS_QUIET_NAN__ 1"
> +.LASF152:
> +	.string	"__DBL_EPSILON__ ((double)2.22044604925031308085e-16L)"
> +.LASF32:
> +	.string	"__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__"
> +.LASF100:
> +	.string	"__INT_LEAST16_MAX__ 0x7fff"
> +.LASF83:
> +	.string	"__SIZE_MAX__ 0xffffffffffffffffUL"
> +.LASF112:
> +	.string	"__UINT_LEAST64_MAX__ 0xffffffffffffffffUL"
> +.LASF117:
> +	.string	"__INT_FAST64_MAX__ 0x7fffffffffffffffL"
> +.LASF30:
> +	.string	"__ORDER_BIG_ENDIAN__ 4321"
> +.LASF68:
> +	.string	"__INTPTR_TYPE__ long int"
> +.LASF160:
> +	.string	"__LDBL_MIN_10_EXP__ (-4931)"
> +.LASF210:
> +	.string	"__GCC_ATOMIC_POINTER_LOCK_FREE 2"
> +.LASF22:
> +	.string	"__SIZEOF_SHORT__ 2"
> +.LASF243:
> +	.string	"_STDC_PREDEF_H 1"
> +.LASF101:
> +	.string	"__INT16_C(c) c"
> +.LASF240:
> +	.string	"unix 1"
> +.LASF63:
> +	.string	"__INT_FAST64_TYPE__ long int"
> +.LASF182:
> +	.string	"__DEC64_MAX__ 9.999999999999999E384DD"
> +.LASF82:
> +	.string	"__PTRDIFF_MAX__ 0x7fffffffffffffffL"
> +.LASF138:
> +	.string	"__FLT_EPSILON__ 1.19209289550781250000e-7F"
> +.LASF75:
> +	.string	"__INT_MAX__ 0x7fffffff"
> +.LASF208:
> +	.string	"__GCC_ATOMIC_LLONG_LOCK_FREE 2"
> +.LASF104:
> +	.string	"__INT_LEAST64_MAX__ 0x7fffffffffffffffL"
> +.LASF186:
> +	.string	"__DEC128_MIN_EXP__ (-6142)"
> +.LASF13:
> +	.string	"__ATOMIC_RELEASE 3"
> +.LASF149:
> +	.string	"__DBL_DECIMAL_DIG__ 17"
> +.LASF144:
> +	.string	"__DBL_DIG__ 15"
> +.LASF135:
> +	.string	"__FLT_DECIMAL_DIG__ 9"
> +.LASF11:
> +	.string	"__ATOMIC_SEQ_CST 5"
> +.LASF188:
> +	.string	"__DEC128_MIN__ 1E-6143DL"
> +.LASF28:
> +	.string	"__BIGGEST_ALIGNMENT__ 16"
> +.LASF19:
> +	.string	"__SIZEOF_INT__ 4"
> +.LASF62:
> +	.string	"__INT_FAST32_TYPE__ long int"
> +.LASF206:
> +	.string	"__GCC_ATOMIC_INT_LOCK_FREE 2"
> +.LASF187:
> +	.string	"__DEC128_MAX_EXP__ 6145"
> +.LASF91:
> +	.string	"__INT16_MAX__ 0x7fff"
> +.LASF198:
> +	.string	"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1"
> +.LASF180:
> +	.string	"__DEC64_MAX_EXP__ 385"
> +.LASF14:
> +	.string	"__ATOMIC_ACQ_REL 4"
> +.LASF129:
> +	.string	"__FLT_MANT_DIG__ 24"
> +.LASF5:
> +	.string	"__GNUC__ 5"
> +.LASF40:
> +	.string	"__UINTMAX_TYPE__ long unsigned int"
> +.LASF245:
> +	.string	"__STDC_IEC_559_COMPLEX__ 1"
> +.LASF205:
> +	.string	"__GCC_ATOMIC_SHORT_LOCK_FREE 2"
> +.LASF189:
> +	.string	"__DEC128_MAX__ 9.999999999999999999999999999999999E6144DL"
> +.LASF9:
> +	.string	"__GNUC_RH_RELEASE__ 4"
> +.LASF57:
> +	.string	"__UINT_LEAST16_TYPE__ short unsigned int"
> +.LASF69:
> +	.string	"__UINTPTR_TYPE__ long unsigned int"
> +.LASF147:
> +	.string	"__DBL_MAX_EXP__ 1024"
> +.LASF0:
> +	.string	"__STDC__ 1"
> +.LASF241:
> +	.string	"__ELF__ 1"
> +.LASF126:
> +	.string	"__FLT_EVAL_METHOD__ 0"
> +.LASF84:
> +	.string	"__INTMAX_MAX__ 0x7fffffffffffffffL"
> +.LASF12:
> +	.string	"__ATOMIC_ACQUIRE 2"
> +.LASF66:
> +	.string	"__UINT_FAST32_TYPE__ long unsigned int"
> +.LASF102:
> +	.string	"__INT_LEAST32_MAX__ 0x7fffffff"
> +.LASF201:
> +	.string	"__GCC_ATOMIC_CHAR_LOCK_FREE 2"
> +.LASF190:
> +	.string	"__DEC128_EPSILON__ 1E-33DL"
> +.LASF64:
> +	.string	"__UINT_FAST8_TYPE__ unsigned char"
> +.LASF61:
> +	.string	"__INT_FAST16_TYPE__ long int"
> +.LASF172:
> +	.string	"__DEC32_MIN_EXP__ (-94)"
> +.LASF92:
> +	.string	"__INT32_MAX__ 0x7fffffff"
> +.LASF158:
> +	.string	"__LDBL_DIG__ 18"
> +.LASF244:
> +	.string	"__STDC_IEC_559__ 1"
> +.LASF191:
> +	.string	"__DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL"
> +.LASF164:
> +	.string	"__LDBL_MAX__ 1.18973149535723176502e+4932L"
> +.LASF223:
> +	.string	"__ATOMIC_HLE_ACQUIRE 65536"
> +.LASF232:
> +	.string	"__SSE_MATH__ 1"
> +.LASF115:
> +	.string	"__INT_FAST16_MAX__ 0x7fffffffffffffffL"
> +.LASF151:
> +	.string	"__DBL_MIN__ ((double)2.22507385850720138309e-308L)"
> +.LASF185:
> +	.string	"__DEC128_MANT_DIG__ 34"
> +.LASF103:
> +	.string	"__INT32_C(c) c"
> +.LASF179:
> +	.string	"__DEC64_MIN_EXP__ (-382)"
> +.LASF79:
> +	.string	"__WCHAR_MIN__ (-__WCHAR_MAX__ - 1)"
> +.LASF197:
> +	.string	"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1"
> +.LASF161:
> +	.string	"__LDBL_MAX_EXP__ 16384"
> +.LASF226:
> +	.string	"__k8__ 1"
> +.LASF42:
> +	.string	"__CHAR32_TYPE__ unsigned int"
> +.LASF86:
> +	.string	"__UINTMAX_MAX__ 0xffffffffffffffffUL"
> +.LASF76:
> +	.string	"__LONG_MAX__ 0x7fffffffffffffffL"
> +.LASF52:
> +	.string	"__INT_LEAST8_TYPE__ signed char"
> +.LASF109:
> +	.string	"__UINT16_C(c) c"
> +.LASF74:
> +	.string	"__SHRT_MAX__ 0x7fff"
> +.LASF23:
> +	.string	"__SIZEOF_FLOAT__ 4"
> +.LASF199:
> +	.string	"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1"
> +.LASF78:
> +	.string	"__WCHAR_MAX__ 0x7fffffff"
> +.LASF166:
> +	.string	"__LDBL_EPSILON__ 1.08420217248550443401e-19L"
> +.LASF31:
> +	.string	"__ORDER_PDP_ENDIAN__ 3412"
> +.LASF29:
> +	.string	"__ORDER_LITTLE_ENDIAN__ 1234"
> +.LASF251:
> +	.string	"GNU C11 5.1.1 20150618 (Red Hat 5.1.1-4) -mtune=generic -march=x86-64 -g3 -O0"
> +.LASF238:
> +	.string	"__unix 1"
> +.LASF10:
> +	.string	"__ATOMIC_RELAXED 0"
> +.LASF80:
> +	.string	"__WINT_MAX__ 0xffffffffU"
> +.LASF220:
> +	.string	"__x86_64__ 1"
> +.LASF171:
> +	.string	"__DEC32_MANT_DIG__ 7"
> +.LASF183:
> +	.string	"__DEC64_EPSILON__ 1E-15DD"
> +.LASF124:
> +	.string	"__GCC_IEC_559 2"
> +.LASF120:
> +	.string	"__UINT_FAST32_MAX__ 0xffffffffffffffffUL"
> +.LASF228:
> +	.string	"__MMX__ 1"
> +.LASF131:
> +	.string	"__FLT_MIN_EXP__ (-125)"
> +.LASF72:
> +	.string	"__GXX_ABI_VERSION 1008"
> +.LASF88:
> +	.string	"__SIG_ATOMIC_MAX__ 0x7fffffff"
> +.LASF247:
> +	.string	"__STDC_NO_THREADS__ 1"
> +.LASF65:
> +	.string	"__UINT_FAST16_TYPE__ long unsigned int"
> +.LASF167:
> +	.string	"__LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L"
> +.LASF141:
> +	.string	"__FLT_HAS_INFINITY__ 1"
> +.LASF116:
> +	.string	"__INT_FAST32_MAX__ 0x7fffffffffffffffL"
> +.LASF44:
> +	.string	"__INT8_TYPE__ signed char"
> +.LASF87:
> +	.string	"__UINTMAX_C(c) c ## UL"
> +.LASF2:
> +	.string	"__STDC_UTF_16__ 1"
> +.LASF39:
> +	.string	"__INTMAX_TYPE__ long int"
> +.LASF195:
> +	.string	"__NO_INLINE__ 1"
> +.LASF168:
> +	.string	"__LDBL_HAS_DENORM__ 1"
> +.LASF70:
> +	.string	"__has_include(STR) __has_include__(STR)"
> +.LASF202:
> +	.string	"__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2"
> +.LASF221:
> +	.string	"__SIZEOF_FLOAT80__ 16"
> +.LASF192:
> +	.string	"__REGISTER_PREFIX__ "
> +.LASF15:
> +	.string	"__ATOMIC_CONSUME 1"
> +.LASF97:
> +	.string	"__UINT64_MAX__ 0xffffffffffffffffUL"
> +.LASF3:
> +	.string	"__STDC_UTF_32__ 1"
> +.LASF49:
> +	.string	"__UINT16_TYPE__ short unsigned int"
> +.LASF229:
> +	.string	"__SSE__ 1"
> +.LASF111:
> +	.string	"__UINT32_C(c) c ## U"
> +.LASF225:
> +	.string	"__k8 1"
> +.LASF177:
> +	.string	"__DEC32_SUBNORMAL_MIN__ 0.000001E-95DF"
> +.LASF249:
> +	.string	"frame2"
> +.LASF248:
> +	.string	"frame3"
> +.LASF216:
> +	.string	"__SIZEOF_PTRDIFF_T__ 8"
> +.LASF27:
> +	.string	"__CHAR_BIT__ 8"
> +.LASF60:
> +	.string	"__INT_FAST8_TYPE__ signed char"
> +.LASF89:
> +	.string	"__SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)"
> +.LASF176:
> +	.string	"__DEC32_EPSILON__ 1E-6DF"
> +.LASF58:
> +	.string	"__UINT_LEAST32_TYPE__ unsigned int"
> +.LASF154:
> +	.string	"__DBL_HAS_DENORM__ 1"
> +.LASF227:
> +	.string	"__code_model_small__ 1"
> +.LASF157:
> +	.string	"__LDBL_MANT_DIG__ 64"
> +.LASF207:
> +	.string	"__GCC_ATOMIC_LONG_LOCK_FREE 2"
> +.LASF242:
> +	.string	"__DECIMAL_BID_FORMAT__ 1"
> +.LASF90:
> +	.string	"__INT8_MAX__ 0x7f"
> +.LASF118:
> +	.string	"__UINT_FAST8_MAX__ 0xff"
> +.LASF132:
> +	.string	"__FLT_MIN_10_EXP__ (-37)"
> +.LASF209:
> +	.string	"__GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1"
> +.LASF37:
> +	.string	"__WCHAR_TYPE__ int"
> +.LASF16:
> +	.string	"__FINITE_MATH_ONLY__ 0"
> +.LASF193:
> +	.string	"__USER_LABEL_PREFIX__ "
> +.LASF41:
> +	.string	"__CHAR16_TYPE__ short unsigned int"
> +.LASF107:
> +	.string	"__UINT8_C(c) c"
> +.LASF219:
> +	.string	"__x86_64 1"
> +.LASF56:
> +	.string	"__UINT_LEAST8_TYPE__ unsigned char"
> +.LASF47:
> +	.string	"__INT64_TYPE__ long int"
> +.LASF196:
> +	.string	"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1"
> +.LASF250:
> +	.string	"main"
> +.LASF96:
> +	.string	"__UINT32_MAX__ 0xffffffffU"
> +.LASF211:
> +	.string	"__GCC_HAVE_DWARF2_CFI_ASM 1"
> +.LASF98:
> +	.string	"__INT_LEAST8_MAX__ 0x7f"
> +.LASF181:
> +	.string	"__DEC64_MIN__ 1E-383DD"
> +.LASF146:
> +	.string	"__DBL_MIN_10_EXP__ (-307)"
> +.LASF139:
> +	.string	"__FLT_DENORM_MIN__ 1.40129846432481707092e-45F"
> +.LASF194:
> +	.string	"__GNUC_STDC_INLINE__ 1"
> +	.ident	"GCC: (GNU) 5.1.1 20150618 (Red Hat 5.1.1-4)"
> +	.section	.note.GNU-stack,"",@progbits
Andrew Burgess Oct. 26, 2015, 10:03 a.m. UTC | #2
* Doug Evans <xdje42@gmail.com> [2015-10-26 01:57:08 +0000]:

> Andrew Burgess <andrew.burgess@embecosm.com> writes:
> > It is possible to use multiple base addresses within a single address
> > range series, within the .debug_ranges section.  The following is a
> > simplified example for 32-bit addresses:
> >
> >   .section ".debug_ranges"
> >   .4byte	0xffffffff
> >   .4byte        BASE_1
> >   .4byte	START_OFFSET_1
> >   .4byte	END_OFFSET_1
> >   .4byte	START_OFFSET_2
> >   .4byte	END_OFFSET_2
> >   .4byte	0xffffffff
> >   .4byte        BASE_2
> >   .4byte	START_OFFSET_3
> >   .4byte	END_OFFSET_3
> >   .4byte	0
> >   .4byte	0
> >
> > In this example START/END 1 and 2 are relative to BASE_1, while
> > START/END 3 are relative to BASE_2.
> >
> > Currently gdb does not correctly parse this DWARF, resulting in
> > corrupted address range information.  This commit fixes this issue, and
> > adds a new test to cover this case.
> >
> > gdb/ChangeLog:
> >
> > 	* dwarf2read.c (dwarf2_ranges_read): Unify and fix base address
> > 	reading code.
> >
> > gdb/testsuite/ChangeLog:
> >
> > 	* gdb.arch/amd64-debug-ranges-base.c: New file.
> > 	* gdb.arch/amd64-debug-ranges-base.exp: New file.
> > 	* gdb.arch/amd64-debug-ranges-base.s: New file.
> 
> Hi.
> 
> The code patch is fine with me, nice find.
> 
> IWBN to enhance the dwarf assembler (testsuite/lib/dwarf.exp)
> to handle .debug_ranges. The more we get away from checking in
> generated assembler the better.
> Can do?
> If not, I'll volunteer to take that on, but I can't promise to
> get to it this week. .debug_ranges is pretty simple so I think(!)
> this will be easy.

This was absolutely my first thought too, and I even stated working on
exactly this feature.

I got the .debug_ranges table generation to a reasonable state, but
then I needed more features from the .debug_line table generator, but
I ran out of time....

Anyway, you can find the initial work I did here:
  https://github.com/T-J-Teru/binutils-gdb/commits/gdb-dwarf-ranges

that branch doesn't contain the fix, just the initial work on writing
a test to expose the bug.  Feel free to take any code out of that
branch if it is useful to you.

> [Though if we go with the generated assembler, take out the 3 in -g3.
> I mention this more for completeness sake though, as I'd really like
> to see if we can do this with the dwarf assembler first.]

I'd rather not push the fix without a test, and I don't think you're
approving the current test, so...

I'll hopefully get more time to work on this next month, if I don't
get approval for the current patch before then I'll return to working
on the dwarf assembler style testing.

Thanks for the review,
Andrew
diff mbox

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 8646e6d..d5649d1 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@ 
+2015-10-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2read.c (dwarf2_ranges_read): Unify and fix base address
+	reading code.
+
 2015-10-15  Yao Qi  <yao.qi@linaro.org>
 
 	* aarch64-linux-nat.c (aarch64_linux_insert_hw_breakpoint):
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 0c45d29..e75d5bb 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -11894,7 +11894,6 @@  dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
   int found_base;
   unsigned int dummy;
   const gdb_byte *buffer;
-  CORE_ADDR marker;
   int low_set;
   CORE_ADDR low = 0;
   CORE_ADDR high = 0;
@@ -11913,18 +11912,6 @@  dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
     }
   buffer = dwarf2_per_objfile->ranges.buffer + offset;
 
-  /* Read in the largest possible address.  */
-  marker = read_address (obfd, buffer, cu, &dummy);
-  if ((marker & mask) == mask)
-    {
-      /* If we found the largest possible address, then
-	 read the base address.  */
-      base = read_address (obfd, buffer + addr_size, cu, &dummy);
-      buffer += 2 * addr_size;
-      offset += 2 * addr_size;
-      found_base = 1;
-    }
-
   low_set = 0;
 
   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
@@ -11949,9 +11936,9 @@  dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
 	 the base address.  Check for a base address here.  */
       if ((range_beginning & mask) == mask)
 	{
-	  /* If we found the largest possible address, then
-	     read the base address.  */
-	  base = read_address (obfd, buffer + addr_size, cu, &dummy);
+	  /* If we found the largest possible address, then we already
+	     have the base address in range_end.  */
+	  base = range_end;
 	  found_base = 1;
 	  continue;
 	}
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 74aa6ae..1587ac6 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@ 
+2015-10-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.arch/amd64-debug-ranges-base.c: New file.
+	* gdb.arch/amd64-debug-ranges-base.exp: New file.
+	* gdb.arch/amd64-debug-ranges-base.s: New file.
+
 2015-10-12  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* gdb.base/dbx.exp (test_func): Remove xfails, update expected
diff --git a/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.c b/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.c
new file mode 100644
index 0000000..7d2f7da
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.c
@@ -0,0 +1,34 @@ 
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2015 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/>.  */
+
+int __attribute__ ((section (".text.3")))
+frame3 (void)
+{
+  return 0;
+}
+
+int __attribute__ ((section (".text.2")))
+frame2 (void)
+{
+  return 0;
+}
+
+int __attribute__ ((section (".text.1")))
+main (void)
+{
+  return frame2 ();
+}
diff --git a/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.exp b/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.exp
new file mode 100644
index 0000000..cee494d
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.exp
@@ -0,0 +1,39 @@ 
+# Copyright (C) 2015 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/>.
+
+standard_testfile .s
+set opts {}
+
+if [info exists COMPILE] {
+    # make check RUNTESTFLAGS="gdb.arch/amd64-entry-value.exp COMPILE=1"
+    set srcfile ${testfile}.cc
+    lappend opts debug optimize=-O2
+} elseif { ![istarget x86_64-*-* ] || ![is_lp64_target] } {
+    verbose "Skipping amd64-debug-ranges-base."
+    return
+}
+
+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} $opts] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+gdb_test "info line main" "Line \[0-9\]* of .* starts at address .* and ends at .*"
+gdb_test "info line frame2" "Line \[0-9\]* of .* starts at address .* and ends at .*"
+gdb_test "info line frame3" "Line \[0-9\]* of .* starts at address .* and ends at .*"
+
diff --git a/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.s b/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.s
new file mode 100644
index 0000000..d672b4d
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/amd64-debug-ranges-base.s
@@ -0,0 +1,1540 @@ 
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2015 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/>.  */
+
+/* This file is compiled from gdb.arch/amd64-debug-ranges-base.c
+   using '-g3 -O0 -S', after which the .debug_ranges sections was
+   re-written by hand in order to contain the required (valid) DWARF.  */
+
+        .file	"amd64-debug-ranges-base.c"
+	.text
+.Ltext0:
+	.section	.text.3,"ax",@progbits
+	.globl	frame3
+	.type	frame3, @function
+frame3:
+.LFB0:
+	.file 1 "amd64-debug-ranges-base.c"
+	.loc 1 20 0
+	.cfi_startproc
+	pushq	%rbp
+	.cfi_def_cfa_offset 16
+	.cfi_offset 6, -16
+	movq	%rsp, %rbp
+	.cfi_def_cfa_register 6
+	.loc 1 21 0
+	movl	$0, %eax
+	.loc 1 22 0
+	popq	%rbp
+	.cfi_def_cfa 7, 8
+	ret
+	.cfi_endproc
+.LFE0:
+	.size	frame3, .-frame3
+	.section	.text.2,"ax",@progbits
+	.globl	frame2
+	.type	frame2, @function
+frame2:
+.LFB1:
+	.loc 1 26 0
+	.cfi_startproc
+	pushq	%rbp
+	.cfi_def_cfa_offset 16
+	.cfi_offset 6, -16
+	movq	%rsp, %rbp
+	.cfi_def_cfa_register 6
+	.loc 1 27 0
+	movl	$0, %eax
+	.loc 1 28 0
+	popq	%rbp
+	.cfi_def_cfa 7, 8
+	ret
+	.cfi_endproc
+.LFE1:
+	.size	frame2, .-frame2
+	.section	.text.1,"ax",@progbits
+	.globl	main
+	.type	main, @function
+main:
+.LFB2:
+	.loc 1 32 0
+	.cfi_startproc
+	pushq	%rbp
+	.cfi_def_cfa_offset 16
+	.cfi_offset 6, -16
+	movq	%rsp, %rbp
+	.cfi_def_cfa_register 6
+	.loc 1 33 0
+	call	frame2
+	.loc 1 34 0
+	popq	%rbp
+	.cfi_def_cfa 7, 8
+	ret
+	.cfi_endproc
+.LFE2:
+	.size	main, .-main
+	.text
+.Letext0:
+	.section	.debug_info,"",@progbits
+.Ldebug_info0:
+	.long	0x88
+	.value	0x4
+	.long	.Ldebug_abbrev0
+	.byte	0x8
+	.uleb128 0x1
+	.long	.LASF251
+	.byte	0xc
+	.long	.LASF252
+	.long	.LASF253
+	.long	.Ldebug_ranges0+0
+	.quad	0
+	.long	.Ldebug_line0
+	.long	.Ldebug_macro0
+	.uleb128 0x2
+	.long	.LASF248
+	.byte	0x1
+	.byte	0x13
+	.long	0x4a
+	.quad	.LFB0
+	.quad	.LFE0-.LFB0
+	.uleb128 0x1
+	.byte	0x9c
+	.uleb128 0x3
+	.byte	0x4
+	.byte	0x5
+	.string	"int"
+	.uleb128 0x2
+	.long	.LASF249
+	.byte	0x1
+	.byte	0x19
+	.long	0x4a
+	.quad	.LFB1
+	.quad	.LFE1-.LFB1
+	.uleb128 0x1
+	.byte	0x9c
+	.uleb128 0x4
+	.long	.LASF250
+	.byte	0x1
+	.byte	0x1f
+	.long	0x4a
+	.quad	.LFB2
+	.quad	.LFE2-.LFB2
+	.uleb128 0x1
+	.byte	0x9c
+	.byte	0
+	.section	.debug_abbrev,"",@progbits
+.Ldebug_abbrev0:
+	.uleb128 0x1
+	.uleb128 0x11
+	.byte	0x1
+	.uleb128 0x25
+	.uleb128 0xe
+	.uleb128 0x13
+	.uleb128 0xb
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0x1b
+	.uleb128 0xe
+	.uleb128 0x55
+	.uleb128 0x17
+	.uleb128 0x11
+	.uleb128 0x1
+	.uleb128 0x10
+	.uleb128 0x17
+	.uleb128 0x2119
+	.uleb128 0x17
+	.byte	0
+	.byte	0
+	.uleb128 0x2
+	.uleb128 0x2e
+	.byte	0
+	.uleb128 0x3f
+	.uleb128 0x19
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x27
+	.uleb128 0x19
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x11
+	.uleb128 0x1
+	.uleb128 0x12
+	.uleb128 0x7
+	.uleb128 0x40
+	.uleb128 0x18
+	.uleb128 0x2117
+	.uleb128 0x19
+	.byte	0
+	.byte	0
+	.uleb128 0x3
+	.uleb128 0x24
+	.byte	0
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3e
+	.uleb128 0xb
+	.uleb128 0x3
+	.uleb128 0x8
+	.byte	0
+	.byte	0
+	.uleb128 0x4
+	.uleb128 0x2e
+	.byte	0
+	.uleb128 0x3f
+	.uleb128 0x19
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x27
+	.uleb128 0x19
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x11
+	.uleb128 0x1
+	.uleb128 0x12
+	.uleb128 0x7
+	.uleb128 0x40
+	.uleb128 0x18
+	.uleb128 0x2116
+	.uleb128 0x19
+	.byte	0
+	.byte	0
+	.byte	0
+	.section	.debug_aranges,"",@progbits
+	.long	0x4c
+	.value	0x2
+	.long	.Ldebug_info0
+	.byte	0x8
+	.byte	0
+	.value	0
+	.value	0
+	.quad	.LFB0
+	.quad	.LFE0-.LFB0
+	.quad	.LFB1
+	.quad	.LFE1-.LFB1
+	.quad	.LFB2
+	.quad	.LFE2-.LFB2
+	.quad	0
+	.quad	0
+	.section	.debug_ranges,"",@progbits
+.Ldebug_ranges0:
+	.quad	0xffffffffffffffff
+	.quad	.LFB0
+	.quad	0
+	.quad	.LFE0 - .LFB0
+	.quad	0xffffffffffffffff
+	.quad	.LFB1
+	.quad	0
+	.quad	.LFE1 - .LFB1
+	.quad	0xffffffffffffffff
+	.quad	.LFB2
+	.quad	0
+	.quad	.LFE2 - .LFB2
+	.quad	0
+	.quad	0
+	.section	.debug_macro,"",@progbits
+.Ldebug_macro0:
+	.value	0x4
+	.byte	0x2
+	.long	.Ldebug_line0
+	.byte	0x7
+	.long	.Ldebug_macro1
+	.byte	0x3
+	.uleb128 0
+	.uleb128 0x1
+	.file 2 "/usr/include/stdc-predef.h"
+	.byte	0x3
+	.uleb128 0
+	.uleb128 0x2
+	.byte	0x7
+	.long	.Ldebug_macro2
+	.byte	0x4
+	.byte	0x4
+	.byte	0
+	.section	.debug_macro,"G",@progbits,wm4.0.9fc6967513006a990da6a9952cf266ea,comdat
+.Ldebug_macro1:
+	.value	0x4
+	.byte	0
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF0
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF1
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF2
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF3
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF4
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF5
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF6
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF7
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF8
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF9
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF10
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF11
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF12
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF13
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF14
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF15
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF16
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF17
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF18
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF19
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF20
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF21
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF22
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF23
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF24
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF25
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF26
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF27
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF28
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF29
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF30
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF31
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF32
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF33
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF34
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF35
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF36
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF37
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF38
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF39
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF40
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF41
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF42
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF43
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF44
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF45
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF46
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF47
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF48
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF49
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF50
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF51
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF52
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF53
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF54
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF55
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF56
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF57
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF58
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF59
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF60
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF61
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF62
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF63
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF64
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF65
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF66
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF67
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF68
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF69
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF70
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF71
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF72
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF73
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF74
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF75
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF76
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF77
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF78
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF79
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF80
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF81
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF82
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF83
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF84
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF85
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF86
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF87
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF88
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF89
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF90
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF91
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF92
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF93
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF94
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF95
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF96
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF97
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF98
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF99
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF100
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF101
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF102
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF103
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF104
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF105
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF106
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF107
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF108
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF109
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF110
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF111
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF112
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF113
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF114
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF115
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF116
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF117
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF118
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF119
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF120
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF121
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF122
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF123
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF124
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF125
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF126
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF127
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF128
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF129
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF130
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF131
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF132
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF133
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF134
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF135
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF136
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF137
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF138
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF139
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF140
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF141
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF142
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF143
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF144
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF145
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF146
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF147
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF148
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF149
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF150
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF151
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF152
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF153
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF154
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF155
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF156
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF157
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF158
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF159
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF160
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF161
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF162
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF163
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF164
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF165
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF166
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF167
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF168
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF169
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF170
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF171
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF172
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF173
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF174
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF175
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF176
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF177
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF178
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF179
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF180
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF181
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF182
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF183
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF184
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF185
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF186
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF187
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF188
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF189
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF190
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF191
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF192
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF193
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF194
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF195
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF196
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF197
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF198
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF199
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF200
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF201
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF202
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF203
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF204
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF205
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF206
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF207
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF208
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF209
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF210
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF211
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF212
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF213
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF214
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF215
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF216
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF217
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF218
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF219
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF220
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF221
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF222
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF223
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF224
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF225
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF226
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF227
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF228
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF229
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF230
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF231
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF232
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF233
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF234
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF235
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF236
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF237
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF238
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF239
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF240
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF241
+	.byte	0x5
+	.uleb128 0
+	.long	.LASF242
+	.byte	0
+	.section	.debug_macro,"G",@progbits,wm4.stdcpredef.h.19.52894a18705f0664f8da17e99c6c0a93,comdat
+.Ldebug_macro2:
+	.value	0x4
+	.byte	0
+	.byte	0x5
+	.uleb128 0x13
+	.long	.LASF243
+	.byte	0x5
+	.uleb128 0x26
+	.long	.LASF244
+	.byte	0x5
+	.uleb128 0x2e
+	.long	.LASF245
+	.byte	0x5
+	.uleb128 0x3b
+	.long	.LASF246
+	.byte	0x5
+	.uleb128 0x3e
+	.long	.LASF247
+	.byte	0
+	.section	.debug_line,"",@progbits
+.Ldebug_line0:
+	.section	.debug_str,"MS",@progbits,1
+.LASF106:
+	.string	"__UINT_LEAST8_MAX__ 0xff"
+.LASF153:
+	.string	"__DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L)"
+.LASF218:
+	.string	"__amd64__ 1"
+.LASF235:
+	.string	"__linux 1"
+.LASF110:
+	.string	"__UINT_LEAST32_MAX__ 0xffffffffU"
+.LASF26:
+	.string	"__SIZEOF_SIZE_T__ 8"
+.LASF8:
+	.string	"__VERSION__ \"5.1.1 20150618 (Red Hat 5.1.1-4)\""
+.LASF1:
+	.string	"__STDC_VERSION__ 201112L"
+.LASF34:
+	.string	"__SIZEOF_POINTER__ 8"
+.LASF252:
+	.string	"amd64-debug-ranges-base.c"
+.LASF178:
+	.string	"__DEC64_MANT_DIG__ 16"
+.LASF128:
+	.string	"__FLT_RADIX__ 2"
+.LASF165:
+	.string	"__LDBL_MIN__ 3.36210314311209350626e-4932L"
+.LASF239:
+	.string	"__unix__ 1"
+.LASF133:
+	.string	"__FLT_MAX_EXP__ 128"
+.LASF162:
+	.string	"__LDBL_MAX_10_EXP__ 4932"
+.LASF215:
+	.string	"__SIZEOF_WINT_T__ 4"
+.LASF148:
+	.string	"__DBL_MAX_10_EXP__ 308"
+.LASF121:
+	.string	"__UINT_FAST64_MAX__ 0xffffffffffffffffUL"
+.LASF217:
+	.string	"__amd64 1"
+.LASF38:
+	.string	"__WINT_TYPE__ unsigned int"
+.LASF113:
+	.string	"__UINT64_C(c) c ## UL"
+.LASF155:
+	.string	"__DBL_HAS_INFINITY__ 1"
+.LASF233:
+	.string	"__SSE2_MATH__ 1"
+.LASF7:
+	.string	"__GNUC_PATCHLEVEL__ 1"
+.LASF236:
+	.string	"__linux__ 1"
+.LASF4:
+	.string	"__STDC_HOSTED__ 1"
+.LASF81:
+	.string	"__WINT_MIN__ 0U"
+.LASF222:
+	.string	"__SIZEOF_FLOAT128__ 16"
+.LASF246:
+	.string	"__STDC_ISO_10646__ 201304L"
+.LASF50:
+	.string	"__UINT32_TYPE__ unsigned int"
+.LASF231:
+	.string	"__FXSR__ 1"
+.LASF184:
+	.string	"__DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD"
+.LASF136:
+	.string	"__FLT_MAX__ 3.40282346638528859812e+38F"
+.LASF253:
+	.string	"/path/to/binutils-gdb/src/gdb/testsuite/gdb.arch"
+.LASF237:
+	.string	"linux 1"
+.LASF114:
+	.string	"__INT_FAST8_MAX__ 0x7f"
+.LASF156:
+	.string	"__DBL_HAS_QUIET_NAN__ 1"
+.LASF143:
+	.string	"__DBL_MANT_DIG__ 53"
+.LASF48:
+	.string	"__UINT8_TYPE__ unsigned char"
+.LASF173:
+	.string	"__DEC32_MAX_EXP__ 97"
+.LASF46:
+	.string	"__INT32_TYPE__ int"
+.LASF43:
+	.string	"__SIG_ATOMIC_TYPE__ int"
+.LASF145:
+	.string	"__DBL_MIN_EXP__ (-1021)"
+.LASF169:
+	.string	"__LDBL_HAS_INFINITY__ 1"
+.LASF20:
+	.string	"__SIZEOF_LONG__ 8"
+.LASF140:
+	.string	"__FLT_HAS_DENORM__ 1"
+.LASF95:
+	.string	"__UINT16_MAX__ 0xffff"
+.LASF204:
+	.string	"__GCC_ATOMIC_WCHAR_T_LOCK_FREE 2"
+.LASF67:
+	.string	"__UINT_FAST64_TYPE__ long unsigned int"
+.LASF123:
+	.string	"__UINTPTR_MAX__ 0xffffffffffffffffUL"
+.LASF33:
+	.string	"__FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__"
+.LASF108:
+	.string	"__UINT_LEAST16_MAX__ 0xffff"
+.LASF212:
+	.string	"__PRAGMA_REDEFINE_EXTNAME 1"
+.LASF53:
+	.string	"__INT_LEAST16_TYPE__ short int"
+.LASF18:
+	.string	"__LP64__ 1"
+.LASF163:
+	.string	"__DECIMAL_DIG__ 21"
+.LASF71:
+	.string	"__has_include_next(STR) __has_include_next__(STR)"
+.LASF122:
+	.string	"__INTPTR_MAX__ 0x7fffffffffffffffL"
+.LASF234:
+	.string	"__gnu_linux__ 1"
+.LASF150:
+	.string	"__DBL_MAX__ ((double)1.79769313486231570815e+308L)"
+.LASF45:
+	.string	"__INT16_TYPE__ short int"
+.LASF170:
+	.string	"__LDBL_HAS_QUIET_NAN__ 1"
+.LASF24:
+	.string	"__SIZEOF_DOUBLE__ 8"
+.LASF94:
+	.string	"__UINT8_MAX__ 0xff"
+.LASF17:
+	.string	"_LP64 1"
+.LASF51:
+	.string	"__UINT64_TYPE__ long unsigned int"
+.LASF54:
+	.string	"__INT_LEAST32_TYPE__ int"
+.LASF93:
+	.string	"__INT64_MAX__ 0x7fffffffffffffffL"
+.LASF224:
+	.string	"__ATOMIC_HLE_RELEASE 131072"
+.LASF230:
+	.string	"__SSE2__ 1"
+.LASF85:
+	.string	"__INTMAX_C(c) c ## L"
+.LASF203:
+	.string	"__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2"
+.LASF213:
+	.string	"__SIZEOF_INT128__ 16"
+.LASF36:
+	.string	"__PTRDIFF_TYPE__ long int"
+.LASF174:
+	.string	"__DEC32_MIN__ 1E-95DF"
+.LASF99:
+	.string	"__INT8_C(c) c"
+.LASF21:
+	.string	"__SIZEOF_LONG_LONG__ 8"
+.LASF130:
+	.string	"__FLT_DIG__ 6"
+.LASF214:
+	.string	"__SIZEOF_WCHAR_T__ 4"
+.LASF105:
+	.string	"__INT64_C(c) c ## L"
+.LASF119:
+	.string	"__UINT_FAST16_MAX__ 0xffffffffffffffffUL"
+.LASF134:
+	.string	"__FLT_MAX_10_EXP__ 38"
+.LASF137:
+	.string	"__FLT_MIN__ 1.17549435082228750797e-38F"
+.LASF59:
+	.string	"__UINT_LEAST64_TYPE__ long unsigned int"
+.LASF25:
+	.string	"__SIZEOF_LONG_DOUBLE__ 16"
+.LASF73:
+	.string	"__SCHAR_MAX__ 0x7f"
+.LASF6:
+	.string	"__GNUC_MINOR__ 1"
+.LASF55:
+	.string	"__INT_LEAST64_TYPE__ long int"
+.LASF127:
+	.string	"__DEC_EVAL_METHOD__ 2"
+.LASF175:
+	.string	"__DEC32_MAX__ 9.999999E96DF"
+.LASF77:
+	.string	"__LONG_LONG_MAX__ 0x7fffffffffffffffLL"
+.LASF200:
+	.string	"__GCC_ATOMIC_BOOL_LOCK_FREE 2"
+.LASF35:
+	.string	"__SIZE_TYPE__ long unsigned int"
+.LASF159:
+	.string	"__LDBL_MIN_EXP__ (-16381)"
+.LASF125:
+	.string	"__GCC_IEC_559_COMPLEX 2"
+.LASF142:
+	.string	"__FLT_HAS_QUIET_NAN__ 1"
+.LASF152:
+	.string	"__DBL_EPSILON__ ((double)2.22044604925031308085e-16L)"
+.LASF32:
+	.string	"__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__"
+.LASF100:
+	.string	"__INT_LEAST16_MAX__ 0x7fff"
+.LASF83:
+	.string	"__SIZE_MAX__ 0xffffffffffffffffUL"
+.LASF112:
+	.string	"__UINT_LEAST64_MAX__ 0xffffffffffffffffUL"
+.LASF117:
+	.string	"__INT_FAST64_MAX__ 0x7fffffffffffffffL"
+.LASF30:
+	.string	"__ORDER_BIG_ENDIAN__ 4321"
+.LASF68:
+	.string	"__INTPTR_TYPE__ long int"
+.LASF160:
+	.string	"__LDBL_MIN_10_EXP__ (-4931)"
+.LASF210:
+	.string	"__GCC_ATOMIC_POINTER_LOCK_FREE 2"
+.LASF22:
+	.string	"__SIZEOF_SHORT__ 2"
+.LASF243:
+	.string	"_STDC_PREDEF_H 1"
+.LASF101:
+	.string	"__INT16_C(c) c"
+.LASF240:
+	.string	"unix 1"
+.LASF63:
+	.string	"__INT_FAST64_TYPE__ long int"
+.LASF182:
+	.string	"__DEC64_MAX__ 9.999999999999999E384DD"
+.LASF82:
+	.string	"__PTRDIFF_MAX__ 0x7fffffffffffffffL"
+.LASF138:
+	.string	"__FLT_EPSILON__ 1.19209289550781250000e-7F"
+.LASF75:
+	.string	"__INT_MAX__ 0x7fffffff"
+.LASF208:
+	.string	"__GCC_ATOMIC_LLONG_LOCK_FREE 2"
+.LASF104:
+	.string	"__INT_LEAST64_MAX__ 0x7fffffffffffffffL"
+.LASF186:
+	.string	"__DEC128_MIN_EXP__ (-6142)"
+.LASF13:
+	.string	"__ATOMIC_RELEASE 3"
+.LASF149:
+	.string	"__DBL_DECIMAL_DIG__ 17"
+.LASF144:
+	.string	"__DBL_DIG__ 15"
+.LASF135:
+	.string	"__FLT_DECIMAL_DIG__ 9"
+.LASF11:
+	.string	"__ATOMIC_SEQ_CST 5"
+.LASF188:
+	.string	"__DEC128_MIN__ 1E-6143DL"
+.LASF28:
+	.string	"__BIGGEST_ALIGNMENT__ 16"
+.LASF19:
+	.string	"__SIZEOF_INT__ 4"
+.LASF62:
+	.string	"__INT_FAST32_TYPE__ long int"
+.LASF206:
+	.string	"__GCC_ATOMIC_INT_LOCK_FREE 2"
+.LASF187:
+	.string	"__DEC128_MAX_EXP__ 6145"
+.LASF91:
+	.string	"__INT16_MAX__ 0x7fff"
+.LASF198:
+	.string	"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1"
+.LASF180:
+	.string	"__DEC64_MAX_EXP__ 385"
+.LASF14:
+	.string	"__ATOMIC_ACQ_REL 4"
+.LASF129:
+	.string	"__FLT_MANT_DIG__ 24"
+.LASF5:
+	.string	"__GNUC__ 5"
+.LASF40:
+	.string	"__UINTMAX_TYPE__ long unsigned int"
+.LASF245:
+	.string	"__STDC_IEC_559_COMPLEX__ 1"
+.LASF205:
+	.string	"__GCC_ATOMIC_SHORT_LOCK_FREE 2"
+.LASF189:
+	.string	"__DEC128_MAX__ 9.999999999999999999999999999999999E6144DL"
+.LASF9:
+	.string	"__GNUC_RH_RELEASE__ 4"
+.LASF57:
+	.string	"__UINT_LEAST16_TYPE__ short unsigned int"
+.LASF69:
+	.string	"__UINTPTR_TYPE__ long unsigned int"
+.LASF147:
+	.string	"__DBL_MAX_EXP__ 1024"
+.LASF0:
+	.string	"__STDC__ 1"
+.LASF241:
+	.string	"__ELF__ 1"
+.LASF126:
+	.string	"__FLT_EVAL_METHOD__ 0"
+.LASF84:
+	.string	"__INTMAX_MAX__ 0x7fffffffffffffffL"
+.LASF12:
+	.string	"__ATOMIC_ACQUIRE 2"
+.LASF66:
+	.string	"__UINT_FAST32_TYPE__ long unsigned int"
+.LASF102:
+	.string	"__INT_LEAST32_MAX__ 0x7fffffff"
+.LASF201:
+	.string	"__GCC_ATOMIC_CHAR_LOCK_FREE 2"
+.LASF190:
+	.string	"__DEC128_EPSILON__ 1E-33DL"
+.LASF64:
+	.string	"__UINT_FAST8_TYPE__ unsigned char"
+.LASF61:
+	.string	"__INT_FAST16_TYPE__ long int"
+.LASF172:
+	.string	"__DEC32_MIN_EXP__ (-94)"
+.LASF92:
+	.string	"__INT32_MAX__ 0x7fffffff"
+.LASF158:
+	.string	"__LDBL_DIG__ 18"
+.LASF244:
+	.string	"__STDC_IEC_559__ 1"
+.LASF191:
+	.string	"__DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL"
+.LASF164:
+	.string	"__LDBL_MAX__ 1.18973149535723176502e+4932L"
+.LASF223:
+	.string	"__ATOMIC_HLE_ACQUIRE 65536"
+.LASF232:
+	.string	"__SSE_MATH__ 1"
+.LASF115:
+	.string	"__INT_FAST16_MAX__ 0x7fffffffffffffffL"
+.LASF151:
+	.string	"__DBL_MIN__ ((double)2.22507385850720138309e-308L)"
+.LASF185:
+	.string	"__DEC128_MANT_DIG__ 34"
+.LASF103:
+	.string	"__INT32_C(c) c"
+.LASF179:
+	.string	"__DEC64_MIN_EXP__ (-382)"
+.LASF79:
+	.string	"__WCHAR_MIN__ (-__WCHAR_MAX__ - 1)"
+.LASF197:
+	.string	"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1"
+.LASF161:
+	.string	"__LDBL_MAX_EXP__ 16384"
+.LASF226:
+	.string	"__k8__ 1"
+.LASF42:
+	.string	"__CHAR32_TYPE__ unsigned int"
+.LASF86:
+	.string	"__UINTMAX_MAX__ 0xffffffffffffffffUL"
+.LASF76:
+	.string	"__LONG_MAX__ 0x7fffffffffffffffL"
+.LASF52:
+	.string	"__INT_LEAST8_TYPE__ signed char"
+.LASF109:
+	.string	"__UINT16_C(c) c"
+.LASF74:
+	.string	"__SHRT_MAX__ 0x7fff"
+.LASF23:
+	.string	"__SIZEOF_FLOAT__ 4"
+.LASF199:
+	.string	"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1"
+.LASF78:
+	.string	"__WCHAR_MAX__ 0x7fffffff"
+.LASF166:
+	.string	"__LDBL_EPSILON__ 1.08420217248550443401e-19L"
+.LASF31:
+	.string	"__ORDER_PDP_ENDIAN__ 3412"
+.LASF29:
+	.string	"__ORDER_LITTLE_ENDIAN__ 1234"
+.LASF251:
+	.string	"GNU C11 5.1.1 20150618 (Red Hat 5.1.1-4) -mtune=generic -march=x86-64 -g3 -O0"
+.LASF238:
+	.string	"__unix 1"
+.LASF10:
+	.string	"__ATOMIC_RELAXED 0"
+.LASF80:
+	.string	"__WINT_MAX__ 0xffffffffU"
+.LASF220:
+	.string	"__x86_64__ 1"
+.LASF171:
+	.string	"__DEC32_MANT_DIG__ 7"
+.LASF183:
+	.string	"__DEC64_EPSILON__ 1E-15DD"
+.LASF124:
+	.string	"__GCC_IEC_559 2"
+.LASF120:
+	.string	"__UINT_FAST32_MAX__ 0xffffffffffffffffUL"
+.LASF228:
+	.string	"__MMX__ 1"
+.LASF131:
+	.string	"__FLT_MIN_EXP__ (-125)"
+.LASF72:
+	.string	"__GXX_ABI_VERSION 1008"
+.LASF88:
+	.string	"__SIG_ATOMIC_MAX__ 0x7fffffff"
+.LASF247:
+	.string	"__STDC_NO_THREADS__ 1"
+.LASF65:
+	.string	"__UINT_FAST16_TYPE__ long unsigned int"
+.LASF167:
+	.string	"__LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L"
+.LASF141:
+	.string	"__FLT_HAS_INFINITY__ 1"
+.LASF116:
+	.string	"__INT_FAST32_MAX__ 0x7fffffffffffffffL"
+.LASF44:
+	.string	"__INT8_TYPE__ signed char"
+.LASF87:
+	.string	"__UINTMAX_C(c) c ## UL"
+.LASF2:
+	.string	"__STDC_UTF_16__ 1"
+.LASF39:
+	.string	"__INTMAX_TYPE__ long int"
+.LASF195:
+	.string	"__NO_INLINE__ 1"
+.LASF168:
+	.string	"__LDBL_HAS_DENORM__ 1"
+.LASF70:
+	.string	"__has_include(STR) __has_include__(STR)"
+.LASF202:
+	.string	"__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2"
+.LASF221:
+	.string	"__SIZEOF_FLOAT80__ 16"
+.LASF192:
+	.string	"__REGISTER_PREFIX__ "
+.LASF15:
+	.string	"__ATOMIC_CONSUME 1"
+.LASF97:
+	.string	"__UINT64_MAX__ 0xffffffffffffffffUL"
+.LASF3:
+	.string	"__STDC_UTF_32__ 1"
+.LASF49:
+	.string	"__UINT16_TYPE__ short unsigned int"
+.LASF229:
+	.string	"__SSE__ 1"
+.LASF111:
+	.string	"__UINT32_C(c) c ## U"
+.LASF225:
+	.string	"__k8 1"
+.LASF177:
+	.string	"__DEC32_SUBNORMAL_MIN__ 0.000001E-95DF"
+.LASF249:
+	.string	"frame2"
+.LASF248:
+	.string	"frame3"
+.LASF216:
+	.string	"__SIZEOF_PTRDIFF_T__ 8"
+.LASF27:
+	.string	"__CHAR_BIT__ 8"
+.LASF60:
+	.string	"__INT_FAST8_TYPE__ signed char"
+.LASF89:
+	.string	"__SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)"
+.LASF176:
+	.string	"__DEC32_EPSILON__ 1E-6DF"
+.LASF58:
+	.string	"__UINT_LEAST32_TYPE__ unsigned int"
+.LASF154:
+	.string	"__DBL_HAS_DENORM__ 1"
+.LASF227:
+	.string	"__code_model_small__ 1"
+.LASF157:
+	.string	"__LDBL_MANT_DIG__ 64"
+.LASF207:
+	.string	"__GCC_ATOMIC_LONG_LOCK_FREE 2"
+.LASF242:
+	.string	"__DECIMAL_BID_FORMAT__ 1"
+.LASF90:
+	.string	"__INT8_MAX__ 0x7f"
+.LASF118:
+	.string	"__UINT_FAST8_MAX__ 0xff"
+.LASF132:
+	.string	"__FLT_MIN_10_EXP__ (-37)"
+.LASF209:
+	.string	"__GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1"
+.LASF37:
+	.string	"__WCHAR_TYPE__ int"
+.LASF16:
+	.string	"__FINITE_MATH_ONLY__ 0"
+.LASF193:
+	.string	"__USER_LABEL_PREFIX__ "
+.LASF41:
+	.string	"__CHAR16_TYPE__ short unsigned int"
+.LASF107:
+	.string	"__UINT8_C(c) c"
+.LASF219:
+	.string	"__x86_64 1"
+.LASF56:
+	.string	"__UINT_LEAST8_TYPE__ unsigned char"
+.LASF47:
+	.string	"__INT64_TYPE__ long int"
+.LASF196:
+	.string	"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1"
+.LASF250:
+	.string	"main"
+.LASF96:
+	.string	"__UINT32_MAX__ 0xffffffffU"
+.LASF211:
+	.string	"__GCC_HAVE_DWARF2_CFI_ASM 1"
+.LASF98:
+	.string	"__INT_LEAST8_MAX__ 0x7f"
+.LASF181:
+	.string	"__DEC64_MIN__ 1E-383DD"
+.LASF146:
+	.string	"__DBL_MIN_10_EXP__ (-307)"
+.LASF139:
+	.string	"__FLT_DENORM_MIN__ 1.40129846432481707092e-45F"
+.LASF194:
+	.string	"__GNUC_STDC_INLINE__ 1"
+	.ident	"GCC: (GNU) 5.1.1 20150618 (Red Hat 5.1.1-4)"
+	.section	.note.GNU-stack,"",@progbits