Re: detecting uninitialized values in debug builds

John Reiser <[email protected]>
Newsgroups gmane.comp.debugging.valgrind
Message-ID <[email protected]>
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
$
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.