Re: detecting uninitialized values in debug builds

Ben White <[email protected]>
Newsgroups gmane.comp.debugging.valgrind
Message-ID <BY5PR16MB324027AAEAEBD4293D593B4484E40@BY5PR16MB3240.namprd16.prod.outlook.com>
Thanks.  Obviously, I should have tried that before posting my question, although I would not have known how to obtain the answer without seeing your answer below.

Not being familiar with the x86 asm language, I modified the foo.cpp program (explicitly assign y=0) and then g++ again, so I could compare the two asm lang outputs.  After that, it was fairly clear that the compiler is not initializing y.

Ben

-----Original Message-----
From: John Reiser <[email protected]> 
Sent: Monday, March 2, 2020 7:20 PM
To: [email protected]
Subject: Re: [Valgrind-users] detecting uninitialized values in debug builds

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://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.sourceforge.net%2Flists%2Flistinfo%2Fvalgrind-users&amp;data=02%7C01%7Cben.white%40cohu.com%7C4af3d19203134610feef08d7bf220529%7Ceacc2a35149847488d1f03fb953672f8%7C0%7C0%7C637188025165390441&amp;sdata=CkROtsN2ADGpGORSPKlYSEqmibqd3VLSA0LfO8U2giU%3D&amp;reserved=0
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.