/* This testcase is part of GDB, the GNU debugger.

   Copyright 2012-2013 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/>.  */


/* Test the behaviour of gdb in the following situation, the dwarf debug
   information describes a parameter as being in a register but a more
   recent (inner) frame marks the register as being undefined.

   This can arrise if the dwarf producer has the location of a parameter in
   a callee clobbered register at the time of a call.  Older versions of
   gcc used to do this, newer versions seem to avoid this issue.

   Though it could be argued that such dwarf is incorrect, we would still
   like gdb to behave in a user friendly, and helpful way when presented
   with such dwarf.  */

/* There are 4 test cases in this assembler file.  In each case funcion
   main calls each test function in turn, each test case then calls the
   breakpt function.

   We don't actually pass any parameters around, we don't need to, instead
   the dwarf for each test function declares that the function has some
   parameters, and tells us which registers these parameters are in.  The
   breakpt function marks some of these registers as undefined.  The main
   function helpfully places some marker values into all the registers that
   are used as parameters so we can see if they ever get printed.

   We use gdb to break in the breakpt function for each of the 4 test
   cases, and then backtrace through the test function back to main.  In
   each case some or all of the parameters to the test function should be
   marked as optimized out, due to the breakpt function effectively
   clobbering them.

   The dwarf register numbering is different to the gdb register number.
   In some of the tests we rely on gdb behaviour of being able to specify a
   struct using a single register location, the structure will then "flow"
   into the next gdb register.  The initial register is specified using a
   dwarf register number, but the "next" register will depend on gdb
   register ordering.

   Exposing this internal gdb register numbering is really a gdb bug, the
   functionality for selecting the "next" register should be moved into
   target dependent code (such as AVR).  Right now we work around this
   bug in this test; if the bug is ever fixed this test is going to need
   some tweaking.

   The breakpt function always marks rcx, rsi, and rdi as undefined.

      register | dwarf | gdb   |         |
      name     | reg # | reg # | breakpt |
     ----------|-------|-------|---------|
        rdx    | 1     | 3     |         |
        rcx    | 2     | 2     | undef   |
        rbx    | 3     | 1     |         |
        rsi    | 4     | 4     | undef   |
        rdi    | 5     | 5     | undef   |

   We declare the test parameters to be in the register rdx, rcx, rbx, rsi,
   and rdi.  Of these, rdx and rbx are not traditionally used for parameter
   passing, but that really doesn't matter for this test.

   int_param_single_reg_loc: Passes 8-byte integer parameters in 8-byte
                             registers using DW_OP_regn style location
                             information.  The parameters are placed as
                             follows, operand0 (rcx), operand1 (rbx),
                             operand2 (rsi).  We expect operand0 and
                             operand2 to be marked as optimised out, but
                             operand1 to be valid.

   struct_param_single_reg_loc: Passes 16-byte structures in two 8-byte
                                registers using dwarf DW_OP_regn location
                                information to describe a single register,
                                gdb will assume that the structure flows
                                into the next sequential register.  The
                                parameters are placed as follows, operand0
                                (rbx/rcx), operand1 (rcx/rdx), and operand2
                                (rsi/rdi).  The reuse of rcx between
                                operand0 and operand1 is intentional.

   struct_param_two_reg_pieces: Passes 16-byte structure in two 8-byte
                                registers using dwarf DW_OP_piece based
                                location information to describe both
                                registers.  The parameters are placed as
                                follows, operand0 (rdx/rcx), operand1
                                (rcx/rbx), and operand2 (rsi/rdi).  The
                                reuse of rcx between operand0 and operand1
                                is intentional.

   int_param_two_reg_pieces: Passes 8-byte integer values in two 8-byte
                             registers with 4-bytes being placed in each
                             register, using dwarf DW_OP_piece based
                             location information to describe how the
                             parameters are split up.The parameters are
                             placed as follows, operand0 (rdx/rcx),
                             operand1 (rcx/rbx), and operand2 (rsi/rdi).
                             The reuse of rcx between operand0 and operand1
                             is intentional.
*/

        .text

.Ltext0:

        /* main */
.globl main
        .type   main, @function
main:
.Ltext1:
        sub    $0x8,%rsp
.Ltext2:
        movq    $0xdeadbe00deadbe01, %rbx
        movq    $0xdeadbe02deadbe03, %rcx
        movq    $0xdeadbe04deadbe05, %rdx
        movq    $0xdeadbe06deadbe07, %rsi
        movq    $0xdeadbe08deadbe09, %rdi

        callq    int_param_single_reg_loc
        nop

        callq    struct_param_single_reg_loc
        nop

        callq    struct_param_two_reg_pieces
        nop

        callq    int_param_two_reg_pieces
        nop

        add    $0x8,%rsp
        retq
.Ltext3:
        .size   main, .-main

        /* breakpt */
.globl breakpt
        .type   breakpt, @function
breakpt:
.Ltext4:
        sub    $0x8,%rsp
        add    $0x8, %rsp
        retq
.Ltext5:
        .size   breakpt, .-breakpt

        /* int_param_single_reg_loc */
.globl int_param_single_reg_loc
        .type   int_param_single_reg_loc, @function
int_param_single_reg_loc:
.Ltext5:
        sub    $0x8,%rsp
.Ltext6:
        nop
        callq    breakpt
        nop
        add    $0x8,%rsp
        retq
.Ltext7:
        .size   int_param_single_reg_loc, .-int_param_single_reg_loc

        /* struct_param_single_reg_loc */
.globl struct_param_single_reg_loc
        .type   struct_param_single_reg_loc, @function
struct_param_single_reg_loc:
.Ltext8:
        sub    $0x8,%rsp
.Ltext9:
        nop
        callq    breakpt
        nop
        add    $0x8,%rsp
        retq
.Ltext10:
        .size   struct_param_single_reg_loc, .-struct_param_single_reg_loc

        /* struct_param_two_reg_pieces */
.globl struct_param_two_reg_pieces
        .type   struct_param_two_reg_pieces, @function
struct_param_two_reg_pieces:
.Ltext11:
        sub    $0x8,%rsp
.Ltext12:
        nop
        callq    breakpt
        nop
        add    $0x8,%rsp
        retq
.Ltext13:
        .size   struct_param_two_reg_pieces, .-struct_param_two_reg_pieces

        /* int_param_two_reg_pieces */
.globl int_param_two_reg_pieces
        .type   int_param_two_reg_pieces, @function
int_param_two_reg_pieces:
.Ltext14:
        sub    $0x8,%rsp
.Ltext15:
        nop
        callq    breakpt
        nop
        add    $0x8,%rsp
        retq
.Ltext16:
        .size   int_param_two_reg_pieces, .-int_param_two_reg_pieces


.Letext0:

        /*******************************************************/

        .section	.debug_frame,"",@progbits

        /* CIE */
.Lframe0:
	.long	.LECIE0-.LSCIE0 /* length */
.LSCIE0:
	.long	0xffffffff      /* CIE_id */
	.byte	0x1             /* version */
	.string	""              /* augmentation */
	.uleb128 0x1            /* code alignment */
	.sleb128 -8             /* data alignment */
	.byte	0x10            /* R/A column */
        /* Initial instructions */
	.byte	0xc             /* DW_CFA_def_cfa */
	.uleb128 0x7            /* reg# */
	.uleb128 0x8            /* offset */
	.byte	0x90            /* DW_CFA_offset (r16) */
	.uleb128 0x1            /* offset */
	.align 8
.LECIE0:

        /* FDE : breakpt */
.LSFDE0:
	.long	.LEFDE0-.LASFDE0        /* length */
.LASFDE0:
	.long	.Lframe0                /* CIE reference */
	.quad	.Ltext4                 /* start */
	.quad	.Ltext5-.Ltext4         /* length */
        /* Instructions */
        .byte   0x7                     /* DW_CFA_undefined */
        .uleb128 0x2                    /* reg# */
        .byte   0x7                     /* DW_CFA_undefined */
        .uleb128 0x4                    /* reg# */
        .byte   0x7                     /* DW_CFA_undefined */
        .uleb128 0x5                    /* reg# */
	.align 8
.LEFDE0:

        /* FDE : int_param_single_reg_loc */
.LSFDE2:
	.long	.LEFDE2-.LASFDE2        /* length */
.LASFDE2:
	.long	.Lframe0                /* CIE reference */
	.quad	.Ltext5                 /* start */
	.quad	.Ltext7-.Ltext5         /* length */
        /* Instructions */
 	.byte	0x4
	.long	.Ltext6-.Ltext5
	.byte	0xe
	.uleb128 0x10
	.align 8
.LEFDE2:

        /* FDE : struct_param_single_reg_loc */
.LSFDE3:
	.long	.LEFDE3-.LASFDE3        /* length */
.LASFDE3:
	.long	.Lframe0                /* CIE reference */
	.quad	.Ltext8                 /* start */
	.quad	.Ltext10-.Ltext8        /* length */
        /* Instructions */
 	.byte	0x4
	.long	.Ltext9-.Ltext8
	.byte	0xe
	.uleb128 0x10
	.align 8
.LEFDE3:

        /* FDE : struct_param_two_reg_pieces */
.LSFDE4:
	.long	.LEFDE4-.LASFDE4        /* length */
.LASFDE4:
	.long	.Lframe0                /* CIE reference */
	.quad	.Ltext11                /* start */
	.quad	.Ltext13-.Ltext11       /* length */
        /* Instructions */
 	.byte	0x4
	.long	.Ltext12-.Ltext11
	.byte	0xe
	.uleb128 0x10
	.align 8
.LEFDE4:

        /* FDE : int_param_two_reg_pieces */
.LSFDE5:
	.long	.LEFDE5-.LASFDE5        /* length */
.LASFDE5:
	.long	.Lframe0                /* CIE reference */
	.quad	.Ltext14                /* start */
	.quad	.Ltext16-.Ltext14       /* length */
        /* Instructions */
 	.byte	0x4
	.long	.Ltext15-.Ltext14
	.byte	0xe
	.uleb128 0x10
	.align 8
.LEFDE5:

        /* FDE : main */
.LSFDE9:
	.long	.LEFDE9-.LASFDE9        /* length */
.LASFDE9:
	.long	.Lframe0                /* CIE reference */
	.quad	.Ltext1                 /* start */
	.quad	.Ltext3-.Ltext1         /* length */
        /* Instructions */
 	.byte	0x4
	.long	.Ltext2-.Ltext1
	.byte	0xe
	.uleb128 0x10
	.align 8
.LEFDE9:

        /*******************************************************/

	.section	.debug_info,"",@progbits
.Ldebug_info0:
        .long  .Ldebug_info_end - .Ldebug_info_start   /* Length */
.Ldebug_info_start:
	.value	0x2                     /* DWARF version number. */
	.long	.Ldebug_abbrev0         /* Offset into .debug_abbrev */
	.byte	0x8                     /* Pointer size */

.LDI0:
	.uleb128 0x1                    /* DW_TAG_compile_unit */
	.string	"GNU C 4.2.1"           /* DW_AT_producer */
	.byte	0x1                     /* DW_AT_language */
	.quad	.Ltext0                 /* DW_AT_low_pc */
	.quad	.Letext0                /* DW_AT_high_pc */

.LDI1:
	.uleb128 0x2                    /* DW_TAG_subprogram */
	.byte	0x1                     /* DW_AT_external */
	.string	"breakpt"               /* DW_AT_name */
	.byte	0x1                     /* DW_AT_prototyped */
	.quad	.Ltext4                 /* DW_AT_low_pc */
	.quad	.Ltext5                 /* DW_AT_high_pc */

.LDI2:
	.uleb128 0x5                    /* DW_TAG_base_type */
	.byte	0x8                     /* DW_AT_byte_size */
	.byte	0x5                     /* DW_AT_encoding (DW_ATE_signed) */
	.string	"long int"              /* DW_AT_name */

.LDI3:
        .uleb128 0x7                    /* DW_TAG_structure_type */
        .string "big"                   /* DW_AT_name */
        .byte   0x10                    /* DW_AT_byte_size */
        .long   .LDI6                   /* DW_AT_sibling */

.LDI4:
        .uleb128 0x8                    /* DW_TAG_member */
        .string "a"                     /* DW_AT_name */
        .long   .LDI2                   /* DW_AT_type */
        .byte   0x2                     /* DW_AT_data_member_location : length */
        .byte   0x23                    /* DW_OP_plus_uconst */
        .uleb128 0x0                    /*   + 0 */

.LDI5:
        .uleb128 0x8                    /* DW_TAG_structure_type */
        .string "b"                     /* DW_AT_name */
        .long   .LDI2                   /* DW_AT_type */
        .byte   0x2                     /* DW_AT_data_member_location : length */
        .byte   0x23                    /* DW_OP_plus_uconst */
        .uleb128 0x8                    /*   + 8 */
        .byte   0x0

.LDI6:
	.uleb128 0x6                    /* DW_TAG_subprogram */
	.byte	0x1                     /* DW_AT_external */
	.string	"main"                  /* DW_AT_name */
	.long	.LDI2                   /* DW_AT_type */
	.quad	.Ltext1                 /* DW_AT_low_pc */
	.quad	.Ltext3                 /* DW_AT_high_pc */

.LDI7:
	.uleb128 0x3                    /* DW_TAG_subprogram */
	.byte	0x1                     /* DW_AT_external */
	.string	"int_param_single_reg_loc"                 /* DW_AT_name */
	.byte	0x1                     /* DW_AT_prototyped */
	.quad	.Ltext5                 /* DW_AT_low_pc */
	.quad	.Ltext7                 /* DW_AT_high_pc */
	.long	.LDI11                  /* DW_AT_sibling */

.LDI8:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand0"              /* DW_AT_name */
	.long	.LDI2                   /* DW_AT_type */
	.byte	1                       /* DW_AT_location : length */
	.byte	0x52                    /* DW_OP_reg2 */

.LDI9:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand1"              /* DW_AT_name */
	.long	.LDI2                   /* DW_AT_type */
	.byte	1                       /* DW_AT_location : length */
	.byte	0x53                    /* DW_OP_reg3 */

.LDI10:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand2"              /* DW_AT_name */
	.long	.LDI2                   /* DW_AT_type */
	.byte	1                       /* DW_AT_location : length */
	.byte	0x54                    /* DW_OP_reg4 */

	.byte	0x0

.LDI11:
	.uleb128 0x3                    /* DW_TAG_subprogram */
	.byte	0x1                     /* DW_AT_external */
	.string	"struct_param_single_reg_loc"                 /* DW_AT_name */
	.byte	0x1                     /* DW_AT_prototyped */
	.quad	.Ltext8                 /* DW_AT_low_pc */
	.quad	.Ltext10                /* DW_AT_high_pc */
	.long	.LDI15                   /* DW_AT_sibling */

.LDI12:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand0"              /* DW_AT_name */
	.long	.LDI3                   /* DW_AT_type */
	.byte	1                       /* DW_AT_location : length */
	.byte	0x53                    /* DW_OP_reg3 */

.LDI13:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand1"              /* DW_AT_name */
	.long	.LDI3                   /* DW_AT_type */
	.byte	1                       /* DW_AT_location : length */
	.byte	0x52                    /* DW_OP_reg2 */

.LDI14:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand2"              /* DW_AT_name */
	.long	.LDI3                   /* DW_AT_type */
	.byte	1                       /* DW_AT_location : length */
	.byte	0x54                    /* DW_OP_reg4 */

	.byte	0x0

.LDI15:
	.uleb128 0x3                    /* DW_TAG_subprogram */
	.byte	0x1                     /* DW_AT_external */
	.string	"struct_param_two_reg_pieces"                 /* DW_AT_name */
	.byte	0x1                     /* DW_AT_prototyped */
	.quad	.Ltext11                /* DW_AT_low_pc */
	.quad	.Ltext13                /* DW_AT_high_pc */
	.long	.LDI19                  /* DW_AT_sibling */

.LDI16:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand0"              /* DW_AT_name */
	.long	.LDI3                   /* DW_AT_type */
	.byte	6                       /* DW_AT_location : length */
	.byte	0x51                    /* DW_OP_reg1 */
        .byte   0x93                    /* DW_OP_piece */
        .uleb128 0x8                    /*    8 bytes */
	.byte	0x52                    /* DW_OP_reg2 */
        .byte   0x93                    /* DW_OP_piece */
        .uleb128 0x8                    /*    8 bytes */

.LDI17:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand1"              /* DW_AT_name */
	.long	.LDI3                   /* DW_AT_type */
	.byte	6                       /* DW_AT_location : length */
	.byte	0x52                    /* DW_OP_reg2 */
        .byte   0x93                    /* DW_OP_piece */
        .uleb128 0x8                    /*    8 bytes */
	.byte	0x53                    /* DW_OP_reg3 */
        .byte   0x93                    /* DW_OP_piece */
        .uleb128 0x8                    /*    8 bytes */

.LDI18:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand2"              /* DW_AT_name */
	.long	.LDI3                   /* DW_AT_type */
	.byte	6                       /* DW_AT_location : length */
	.byte	0x54                    /* DW_OP_reg4 */
        .byte   0x93                    /* DW_OP_piece */
        .uleb128 0x8                    /*    8 bytes */
	.byte	0x55                    /* DW_OP_reg5 */
        .byte   0x93                    /* DW_OP_piece */
        .uleb128 0x8                    /*    8 bytes */

	.byte	0x0

.LDI19:
	.uleb128 0x3                    /* DW_TAG_subprogram */
	.byte	0x1                     /* DW_AT_external */
	.string	"int_param_two_reg_pieces"                 /* DW_AT_name */
	.byte	0x1                     /* DW_AT_prototyped */
	.quad	.Ltext14                /* DW_AT_low_pc */
	.quad	.Ltext16                /* DW_AT_high_pc */
	.long	.LDIE0                  /* DW_AT_sibling */

.LDI20:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand0"              /* DW_AT_name */
	.long	.LDI2                   /* DW_AT_type */
	.byte	6                       /* DW_AT_location : length */
	.byte	0x51                    /* DW_OP_reg1 */
        .byte   0x93                    /* DW_OP_piece */
        .uleb128 0x4                    /*    4 bytes */
	.byte	0x52                    /* DW_OP_reg2 */
        .byte   0x93                    /* DW_OP_piece */
        .uleb128 0x4                    /*    4 bytes */

.LDI21:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand1"              /* DW_AT_name */
	.long	.LDI2                   /* DW_AT_type */
	.byte	6                       /* DW_AT_location : length */
	.byte	0x52                    /* DW_OP_reg2 */
        .byte   0x93                    /* DW_OP_piece */
        .uleb128 0x4                    /*    4 bytes */
	.byte	0x53                    /* DW_OP_reg3 */
        .byte   0x93                    /* DW_OP_piece */
        .uleb128 0x4                    /*    4 bytes */

.LDI22:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand2"              /* DW_AT_name */
	.long	.LDI2                   /* DW_AT_type */
	.byte	6                       /* DW_AT_location : length */
	.byte	0x54                    /* DW_OP_reg4 */
        .byte   0x93                    /* DW_OP_piece */
        .uleb128 0x4                    /*    4 bytes */
	.byte	0x55                    /* DW_OP_reg5 */
        .byte   0x93                    /* DW_OP_piece */
        .uleb128 0x4                    /*    4 bytes */

	.byte	0x0

.LDIE0:
	.byte	0x0
.Ldebug_info_end:

        /*******************************************************/

	.section	.debug_abbrev,"",@progbits
.Ldebug_abbrev0:
	.uleb128 0x1    /* abbrev code */
	.uleb128 0x11   /* TAG: DW_TAG_compile_unit */
	.byte	0x1     /* DW_CHILDREN_yes */
	.uleb128 0x25   /* DW_AT_producer */
	.uleb128 0x8    /*   DW_FORM_string */
	.uleb128 0x13   /* DW_AT_language */
	.uleb128 0xb    /*   DW_FORM_data1 */
        .uleb128 0x11   /* DW_AT_low_pc */
        .uleb128 0x1    /*   DW_FORM_addr */
        .uleb128 0x12   /* DW_AT_high_pc */
        .uleb128 0x1    /*   DW_FORM_addr */
	.byte	0x0
	.byte	0x0

	.uleb128 0x2    /* abbrev code */
	.uleb128 0x2e   /* TAG: DW_TAG_subprogram */
	.byte	0x0     /* DW_CHILDREN_no */
	.uleb128 0x3f   /* DW_AT_external */
	.uleb128 0xc    /*   DW_FORM_flag */
	.uleb128 0x3    /* DW_AT_name */
	.uleb128 0x8    /*   DW_FORM_string */
	.uleb128 0x27   /* DW_AT_prototyped */
	.uleb128 0xc    /*    DW_FORM_flag*/
	.uleb128 0x11   /* DW_AT_low_pc */
	.uleb128 0x1    /*   DW_FORM_addr */
	.uleb128 0x12   /* DW_AT_high_pc */
	.uleb128 0x1    /*   DW_FORM_addr */
	.byte	0x0
	.byte	0x0

	.uleb128 0x3    /* abbrev code */
	.uleb128 0x2e   /* TAG: DW_TAG_subprogram */
	.byte	0x1     /* DW_CHILDREN_yes */
	.uleb128 0x3f   /* DW_AT_external */
	.uleb128 0xc    /*   DW_FORM_flag */
	.uleb128 0x3    /* DW_AT_name */
	.uleb128 0x8    /*   DW_FORM_string */
	.uleb128 0x27   /* DW_AT_prototyped */
	.uleb128 0xc    /*    DW_FORM_flag*/
	.uleb128 0x11   /* DW_AT_low_pc */
	.uleb128 0x1    /*   DW_FORM_addr */
	.uleb128 0x12   /* DW_AT_high_pc */
	.uleb128 0x1    /*   DW_FORM_addr */
	.uleb128 0x1    /* DW_AT_sibling */
	.uleb128 0x13   /*   DW_FORM_ref4 */
	.byte	0x0
	.byte	0x0

	.uleb128 0x4    /* abbrev code */
	.uleb128 0x5    /* TAG: DW_TAG_formal_parameter */
	.byte	0x0     /* DW_CHILDREN_no */
	.uleb128 0x3    /* DW_AT_name */
	.uleb128 0x8    /*   DW_FORM_string */
	.uleb128 0x49   /* DW_AT_type */
	.uleb128 0x13   /*   DW_FORM_ref4 */
	.uleb128 0x2    /* DW_AT_location */
	.uleb128 0xa    /*   DW_FORM_block1 */
	.byte	0x0
	.byte	0x0

	.uleb128 0x5    /* abbrev code */
	.uleb128 0x24   /* TAG: DW_TAG_base_type */
	.byte	0x0     /* DW_CHILDREN_no */
	.uleb128 0xb    /* DW_AT_byte_size */
	.uleb128 0xb    /*   DW_FORM_data1 */
	.uleb128 0x3e   /* DW_AT_encoding */
	.uleb128 0xb    /*   DW_FORM_data1 */
	.uleb128 0x3    /* DW_AT_name */
	.uleb128 0x8    /*   DW_FORM_string */
	.byte	0x0
	.byte	0x0

	.uleb128 0x6    /* abbrev code */
	.uleb128 0x2e   /* TAG: DW_TAG_subprogram */
	.byte	0x0     /* DW_CHILDREN_no */
	.uleb128 0x3f   /* DW_AT_external */
	.uleb128 0xc    /*   DW_FORM_flag */
	.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 */
	.byte	0x0
	.byte	0x0

        .uleb128 0x7    /* abbrev code */
        .uleb128 0x13   /* DW_TAG_structure_type */
        .byte   0x1     /* DW_CHILDREN_yes */
        .uleb128 0x3    /* DW_AT_name */
        .uleb128 0x8    /*   DW_FORM_string */
        .uleb128 0xb    /* DW_AT_byte_size */
        .uleb128 0xb    /*    DW_FORM_data1 */
        .uleb128 0x1    /* DW_AT_sibling */
        .uleb128 0x13   /*   DW_FORM_ref4 */
        .byte   0x0
        .byte   0x0

        .uleb128 0x8    /* abbrev code */
        .uleb128 0xd    /* DW_TAG_member */
        .byte   0x0     /* DW_children_no */
        .uleb128 0x3    /* DW_AT_name */
        .uleb128 0x8    /*   DW_FORM_string */
        .uleb128 0x49   /* DW_AT_type */
        .uleb128 0x13   /*   DW_FORM_ref4 */
        .uleb128 0x38   /* DW_AT_data_member_location */
        .uleb128 0xa    /*   DW_FORM_block1 */
        .byte   0x0
        .byte   0x0

        .byte	0x0
