123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504 |
- /*
- Copyright 2009-2022 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 was compiled from a trivial program just to test the
- DW_OP_stack_value and DW_OP_implicit_value operators:
- unsigned int func (unsigned int arg) __attribute__ ((__noinline__));
- unsigned int func (unsigned int arg)
- {
- unsigned int uses_stack_op = 23;
- unsigned int uses_lit_op = 0x7fffffff;
- unsigned int result = arg;
- if (arg % 2)
- result += uses_lit_op + uses_stack_op;
- else
- {
- ++uses_stack_op;
- ++uses_lit_op;
- result -= uses_stack_op + uses_lit_op;
- }
- return result * uses_stack_op; // line 19, see the .exp file
- }
- int main (int argc, char *argv[])
- {
- return func (1024);
- }
- Then it was compiled with:
-
- gcc -fvar-tracking{,-assignments} -gdwarf-3
- -fno-inline{,-functions,-small-functions,-functions-called-once}
- -O2
- */
- .file "valop.c"
- .section .debug_abbrev,"",@progbits
- .Ldebug_abbrev0:
- .section .debug_info,"",@progbits
- .Ldebug_info0:
- .section .debug_line,"",@progbits
- .Ldebug_line0:
- .text
- .Ltext0:
- .p2align 4,,15
- .globl func
- .type func, @function
- func:
- .LFB0:
- .file 1 "valop.c"
- .loc 1 4 0
- .cfi_startproc
- .LVL0:
- pushl %ebp
- .cfi_def_cfa_offset 8
- movl %esp, %ebp
- .cfi_offset 5, -8
- .cfi_def_cfa_register 5
- .loc 1 4 0
- movl 8(%ebp), %eax
- .LVL1:
- .loc 1 9 0
- testb $1, %al
- jne .L5
- .LVL2:
- .loc 1 16 0
- addl $2147483624, %eax
- .LVL3:
- .loc 1 13 0
- movl $24, %edx
- .LVL4:
- .loc 1 16 0
- imull %edx, %eax
- .LVL5:
- .loc 1 20 0
- popl %ebp
- .cfi_remember_state
- .cfi_restore 5
- .cfi_def_cfa 4, 4
- ret
- .LVL6:
- .p2align 4,,7
- .p2align 3
- .L5:
- .cfi_restore_state
- .loc 1 10 0
- subl $2147483626, %eax
- .LVL7:
- .loc 1 5 0
- movl $23, %edx
- .LVL8:
- .loc 1 16 0
- imull %edx, %eax
- .LVL9:
- .loc 1 20 0
- popl %ebp
- .cfi_def_cfa 4, 4
- .cfi_restore 5
- ret
- .cfi_endproc
- .LFE0:
- .size func, .-func
- .p2align 4,,15
- .globl _start
- .type _start, @function
- _start:
- .LFB1:
- .loc 1 23 0
- .cfi_startproc
- .LVL10:
- pushl %ebp
- .cfi_def_cfa_offset 8
- movl %esp, %ebp
- .cfi_offset 5, -8
- .cfi_def_cfa_register 5
- subl $4, %esp
- .loc 1 24 0
- movl $1024, (%esp)
- call func
- .LVL11:
- .loc 1 25 0
- leave
- .cfi_restore 5
- .cfi_def_cfa 4, 4
- ret
- .cfi_endproc
- .LFE1:
- .size _start, .-_start
- .Letext0:
- .section .debug_loc,"",@progbits
- .Ldebug_loc0:
- .LLST0:
- .long .LVL0-.Ltext0
- .long .LVL2-.Ltext0
- .value 0x4
- .byte 0x47
- .byte 0x9f
- .byte 0x93
- .uleb128 0x4
- .long .LVL2-.Ltext0
- .long .LVL4-.Ltext0
- .value 0x4
- .byte 0x48
- .byte 0x9f
- .byte 0x93
- .uleb128 0x4
- .long .LVL4-.Ltext0
- .long .LVL6-.Ltext0
- .value 0x1
- .byte 0x52
- .long .LVL6-.Ltext0
- .long .LVL8-.Ltext0
- .value 0x4
- .byte 0x47
- .byte 0x9f
- .byte 0x93
- .uleb128 0x4
- .long .LVL8-.Ltext0
- .long .LFE0-.Ltext0
- .value 0x1
- .byte 0x52
- .long 0x0
- .long 0x0
- .LLST1:
- .long .LVL0-.Ltext0
- .long .LVL2-.Ltext0
- .value 0x6
- .byte 0x9e
- .uleb128 0x4
- .long 0x7fffffff
- .long .LVL2-.Ltext0
- .long .LVL6-.Ltext0
- .value 0x6
- .byte 0x9e
- .uleb128 0x4
- .long 0x80000000
- .long .LVL6-.Ltext0
- .long .LFE0-.Ltext0
- .value 0x6
- .byte 0x9e
- .uleb128 0x4
- .long 0x7fffffff
- .long 0x0
- .long 0x0
- .LLST2:
- .long .LVL1-.Ltext0
- .long .LVL3-.Ltext0
- .value 0x1
- .byte 0x50
- .long .LVL3-.Ltext0
- .long .LVL5-.Ltext0
- .value 0x1
- .byte 0x50
- .long .LVL6-.Ltext0
- .long .LVL7-.Ltext0
- .value 0x1
- .byte 0x50
- .long .LVL7-.Ltext0
- .long .LVL9-.Ltext0
- .value 0x1
- .byte 0x50
- .long 0x0
- .long 0x0
- .LLST3:
- .long .LVL10-.Ltext0
- .long .LVL11-1-.Ltext0
- .value 0x2
- .byte 0x91
- .sleb128 0
- .long 0x0
- .long 0x0
- .LLST4:
- .long .LVL10-.Ltext0
- .long .LVL11-1-.Ltext0
- .value 0x2
- .byte 0x91
- .sleb128 4
- .long 0x0
- .long 0x0
- .section .debug_info
- .long 0xd4
- .value 0x3
- .long .Ldebug_abbrev0
- .byte 0x4
- .uleb128 0x1
- .long .LASF9
- .byte 0x1
- .long .LASF10
- .long .LASF11
- .long .Ltext0
- .long .Letext0
- .long .Ldebug_line0
- .uleb128 0x2
- .byte 0x1
- .long .LASF3
- .byte 0x1
- .byte 0x3
- .byte 0x1
- .long 0x7c
- .long .LFB0
- .long .LFE0
- .byte 0x1
- .byte 0x9c
- .long 0x7c
- .uleb128 0x3
- .string "arg"
- .byte 0x1
- .byte 0x3
- .long 0x7c
- .byte 0x2
- .byte 0x91
- .sleb128 0
- .uleb128 0x4
- .long .LASF0
- .byte 0x1
- .byte 0x5
- .long 0x7c
- .long .LLST0
- .uleb128 0x4
- .long .LASF1
- .byte 0x1
- .byte 0x6
- .long 0x7c
- .long .LLST1
- .uleb128 0x4
- .long .LASF2
- .byte 0x1
- .byte 0x7
- .long 0x7c
- .long .LLST2
- .byte 0x0
- .uleb128 0x5
- .byte 0x4
- .byte 0x7
- .long .LASF7
- .uleb128 0x2
- .byte 0x1
- .long .LASF4
- .byte 0x1
- .byte 0x16
- .byte 0x1
- .long 0xbd
- .long .LFB1
- .long .LFE1
- .byte 0x1
- .byte 0x9c
- .long 0xbd
- .uleb128 0x6
- .long .LASF5
- .byte 0x1
- .byte 0x16
- .long 0xbd
- .long .LLST3
- .uleb128 0x6
- .long .LASF6
- .byte 0x1
- .byte 0x16
- .long 0xc4
- .long .LLST4
- .byte 0x0
- .uleb128 0x7
- .byte 0x4
- .byte 0x5
- .string "int"
- .uleb128 0x8
- .byte 0x4
- .long 0xca
- .uleb128 0x8
- .byte 0x4
- .long 0xd0
- .uleb128 0x5
- .byte 0x1
- .byte 0x6
- .long .LASF8
- .byte 0x0
- .section .debug_abbrev
- .uleb128 0x1
- .uleb128 0x11
- .byte 0x1
- .uleb128 0x25
- .uleb128 0xe
- .uleb128 0x13
- .uleb128 0xb
- .uleb128 0x3
- .uleb128 0xe
- .uleb128 0x1b
- .uleb128 0xe
- .uleb128 0x11
- .uleb128 0x1
- .uleb128 0x12
- .uleb128 0x1
- .uleb128 0x10
- .uleb128 0x6
- .byte 0x0
- .byte 0x0
- .uleb128 0x2
- .uleb128 0x2e
- .byte 0x1
- .uleb128 0x3f
- .uleb128 0xc
- .uleb128 0x3
- .uleb128 0xe
- .uleb128 0x3a
- .uleb128 0xb
- .uleb128 0x3b
- .uleb128 0xb
- .uleb128 0x27
- .uleb128 0xc
- .uleb128 0x49
- .uleb128 0x13
- .uleb128 0x11
- .uleb128 0x1
- .uleb128 0x12
- .uleb128 0x1
- .uleb128 0x40
- .uleb128 0xa
- .uleb128 0x1
- .uleb128 0x13
- .byte 0x0
- .byte 0x0
- .uleb128 0x3
- .uleb128 0x5
- .byte 0x0
- .uleb128 0x3
- .uleb128 0x8
- .uleb128 0x3a
- .uleb128 0xb
- .uleb128 0x3b
- .uleb128 0xb
- .uleb128 0x49
- .uleb128 0x13
- .uleb128 0x2
- .uleb128 0xa
- .byte 0x0
- .byte 0x0
- .uleb128 0x4
- .uleb128 0x34
- .byte 0x0
- .uleb128 0x3
- .uleb128 0xe
- .uleb128 0x3a
- .uleb128 0xb
- .uleb128 0x3b
- .uleb128 0xb
- .uleb128 0x49
- .uleb128 0x13
- .uleb128 0x2
- .uleb128 0x6
- .byte 0x0
- .byte 0x0
- .uleb128 0x5
- .uleb128 0x24
- .byte 0x0
- .uleb128 0xb
- .uleb128 0xb
- .uleb128 0x3e
- .uleb128 0xb
- .uleb128 0x3
- .uleb128 0xe
- .byte 0x0
- .byte 0x0
- .uleb128 0x6
- .uleb128 0x5
- .byte 0x0
- .uleb128 0x3
- .uleb128 0xe
- .uleb128 0x3a
- .uleb128 0xb
- .uleb128 0x3b
- .uleb128 0xb
- .uleb128 0x49
- .uleb128 0x13
- .uleb128 0x2
- .uleb128 0x6
- .byte 0x0
- .byte 0x0
- .uleb128 0x7
- .uleb128 0x24
- .byte 0x0
- .uleb128 0xb
- .uleb128 0xb
- .uleb128 0x3e
- .uleb128 0xb
- .uleb128 0x3
- .uleb128 0x8
- .byte 0x0
- .byte 0x0
- .uleb128 0x8
- .uleb128 0xf
- .byte 0x0
- .uleb128 0xb
- .uleb128 0xb
- .uleb128 0x49
- .uleb128 0x13
- .byte 0x0
- .byte 0x0
- .byte 0x0
- .section .debug_pubnames,"",@progbits
- .long 0x20
- .value 0x2
- .long .Ldebug_info0
- .long 0xd8
- .long 0x25
- .string "func"
- .long 0x83
- .string "main"
- .long 0x0
- .section .debug_aranges,"",@progbits
- .long 0x1c
- .value 0x2
- .long .Ldebug_info0
- .byte 0x4
- .byte 0x0
- .value 0x0
- .value 0x0
- .long .Ltext0
- .long .Letext0-.Ltext0
- .long 0x0
- .long 0x0
- .section .debug_str,"MS",@progbits,1
- .LASF7:
- .string "unsigned int"
- .LASF3:
- .string "func"
- .LASF0:
- .string "uses_stack_op"
- .LASF5:
- .string "argc"
- .LASF10:
- .string "valop.c"
- .LASF2:
- .string "result"
- .LASF8:
- .string "char"
- .LASF9:
- .string "GNU C 4.5.0 20090818 (experimental) [var-tracking-assignments-branch revision 150964]"
- .LASF4:
- .string "main"
- .LASF11:
- .string "/tmp"
- .LASF1:
- .string "uses_lit_op"
- .LASF6:
- .string "argv"
- .ident "GCC: (GNU) 4.5.0 20090818 (experimental) [var-tracking-assignments-branch revision 150964]"
- .section .note.GNU-stack,"",@progbits
|