This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Multiple calls to __gcov_init


  Why does GCC emit multiple calls to __gcov_init, via mulitple (two) entries in
the ctors table? For example "int foo () { return 0; }" compiled with "gcc -S
-fprofile-generate" produces the following assembly file, where the ".ctors"
section conrtains two entries.

	.file	"x.c"
	.text
.globl foo
	.type	foo, @function
foo:
	pushl	%ebp
	movl	%esp, %ebp
	movl	.LPBX1, %eax
	movl	.LPBX1+4, %edx
	addl	$1, %eax
	adcl	$0, %edx
	movl	%eax, .LPBX1
	movl	%edx, .LPBX1+4
	movl	$0, %eax
	popl	%ebp
	ret
	.size	foo, .-foo
	.local	.LPBX1
	.comm	.LPBX1,8,8
	.section	.rodata
.LC0:
	.string	"/home/velco/x.gcda"
	.data
	.align 4
.LC1:
	.long	3
	.long	970900823
	.long	1
	.align 32
	.type	.LPBX0, @object
	.size	.LPBX0, 52
.LPBX0:
	.long	875573861
	.long	0
	.long	-786236445
	.long	.LC0
	.long	1
	.long	.LC1
	.long	1
	.long	1
	.long	.LPBX1
	.long	__gcov_merge_add
	.zero	12
	.text
	.type	_GLOBAL__I_0_foo, @function
_GLOBAL__I_0_foo:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	$.LPBX0, (%esp)
	call	__gcov_init
	leave
	ret
	.size	_GLOBAL__I_0_foo, .-_GLOBAL__I_0_foo
	.section	.ctors,"aw",@progbits
	.align 4
	.long	_GLOBAL__I_0_foo
	.align 4
	.long	_GLOBAL__I_0_foo
	.ident	"GCC: (GNU) 4.2.0 20060425 (experimental)"
	.section	.note.GNU-stack,"",@progbits


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]