On 3/2/20 22:02 UTC, Ben White wrote:
I’ve also been told that the g++ compiler will initialize all stack
objects to zero when compiling for debug (the -g option).
Obviously you didn't try it. g++ 9.2.1 does not do that.
$ cat foo.cpp
int g(int x, int y);
int f(int x)
{
int y;
return g(x, y); // uninit use of y
}
$ g++ -g -S foo.cpp
$ cat foo.s
.file "foo.cpp"
.text
.Ltext0:
.globl _Z1fi
.type _Z1fi, @function
_Z1fi:
.LFB0:
.file 1 "foo.cpp"
.loc 1 4 1
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $32, %rsp
movl %edi, -20(%rbp)
.loc 1 6 17
movl -4(%rbp), %edx // -4(%rbp) is never initialized
movl -20(%rbp), %eax
movl %edx, %esi // 2nd parameter to g
movl %eax, %edi
call _Z1gii
.loc 1 7 1
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size _Z1fi, .-_Z1fi
[[snip]]
.section .debug_str,"MS",@progbits,1
.LASF1:
.string "foo.cpp"
.LASF0:
.string "GNU C++14 9.2.1 20190827 (Red Hat 9.2.1-1) -mtune=generic
-march=x86-64 -g"
.LASF3:
.string "_Z1fi"
.LASF2:
.string "/home/user"
.ident "GCC: (GNU) 9.2.1 20190827 (Red Hat 9.2.1-1)"
.section .note.GNU-stack,"",@progbits
$
_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users