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

   Copyright 2012-2021 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 function
   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
.Ltext5a:
        .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:
.Ltext5b:
        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	.Ltext5a-.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	.Ltext5b                /* start */
	.quad	.Ltext7-.Ltext5b        /* length */
        /* Instructions */
 	.byte	0x4
	.long	.Ltext6-.Ltext5b
	.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	.Ltext5a                /* 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 - .Ldebug_info0   /* DW_AT_sibling */

.LDI4:
        .uleb128 0x8                    /* DW_TAG_member */
        .string "a"                     /* DW_AT_name */
        .long   .LDI2 - .Ldebug_info0   /* 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_member */
        .string "b"                     /* DW_AT_name */
        .long   .LDI2 - .Ldebug_info0   /* 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 - .Ldebug_info0   /* 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	.Ltext5b                /* DW_AT_low_pc */
	.quad	.Ltext7                 /* DW_AT_high_pc */
	.long	.LDI11 - .Ldebug_info0  /* DW_AT_sibling */

.LDI8:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand0"              /* DW_AT_name */
	.long	.LDI2 - .Ldebug_info0   /* 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 - .Ldebug_info0   /* 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 - .Ldebug_info0   /* 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 - .Ldebug_info0  /* DW_AT_sibling */

.LDI12:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand0"              /* DW_AT_name */
	.long	.LDI3 - .Ldebug_info0   /* 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 - .Ldebug_info0   /* 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 - .Ldebug_info0   /* 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 - .Ldebug_info0  /* DW_AT_sibling */

.LDI16:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand0"              /* DW_AT_name */
	.long	.LDI3 - .Ldebug_info0   /* 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 - .Ldebug_info0   /* 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 - .Ldebug_info0   /* 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 - .Ldebug_info0  /* DW_AT_sibling */

.LDI20:
	.uleb128 0x4                    /* DW_TAG_formal_parameter */
	.string	"operand0"              /* DW_AT_name */
	.long	.LDI2 - .Ldebug_info0   /* 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 - .Ldebug_info0   /* 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 - .Ldebug_info0   /* 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
