debug/2283: -g3 -O1 -finline-function and __attribute__((constructor)) yield bad stabs

d@openbsd.org d@openbsd.org
Tue Mar 13 19:16:00 GMT 2001


>Number:         2283
>Category:       debug
>Synopsis:       -g3 -O1 -finline-function and __attribute__((constructor)) yield bad stabs
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Mar 13 19:16:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     David Leonard
>Release:        gcc version 2.95.3 20010112 (prerelease)
>Organization:
>Environment:

Configuration
	I'm using the gcc from OpenBSD 2.8-current (march 2001)
	i386-unknown-openbsd2.8/2.95.3
>Description:

This C compilation unit (called uthread_init.c):

	extern void _thread_init(void);
	void _thread_init_constructor(void) __attribute__((constructor));
	void
	_thread_init_constructor()
	{
		_thread_init();
	}

When compiled like this:

	gcc -v -c  uthread_autoinit.c -g3 -O1 -finline-functions

Produces this error:

	Using builtin specs.
	gcc version 2.95.3 20010112 (prerelease)
	 /usr/lib/gcc-lib/i386-unknown-openbsd2.8/2.95.3/cpp0 -lang-c -v -D__GNUC__=2 -D__GNUC_MINOR__=95 -D__unix__ -D__i386__ -D__OpenBSD__ -D__unix__ -D__i386__ -D__OpenBSD__ -Asystem(unix) -Asystem(OpenBSD) -Acpu(i386) -Amachine(i386) -D__OPTIMIZE__ -g3 uthread_autoinit.c /tmp/ccE31227.i
	GNU CPP version 2.95.3 20010112 (prerelease) (80386, BSD syntax)
	#include "..." search starts here:
	#include <...> search starts here:
	 /usr/include
	End of search list.
	The following default directories have been omitted from the search path:
	 /usr/include/g++
	End of omitted list.
	 /usr/lib/gcc-lib/i386-unknown-openbsd2.8/2.95.3/cc1 /tmp/ccE31227.i -quiet -dumpbase uthread_autoinit.c -g3 -O1 -version -finline-functions -o /tmp/ccU31227.s
	GNU C version 2.95.3 20010112 (prerelease) (i386-unknown-openbsd2.8) compiled by GNU C version 2.95.3 20010112 (prerelease).
	 as -o uthread_autoinit.o /tmp/ccU31227.s
	/tmp/ccU31227.s: Assembler messages:
	/tmp/ccU31227.s:61: Error: Local symbol LBB3 never defined.
	/tmp/ccU31227.s:61: Error: Local symbol LBE3 never defined.
	/tmp/ccU31227.s:61: Fatal error:2 errors, 0 warnings, no object file generated.

With -save-temps, the saved .i file, and the .s file are as follows:

------------------------------------------------------------

# 0 "uthread_autoinit.c"
#define __BASE_FILE__ "uthread_autoinit.c"
# 0 "uthread_autoinit.c"
#define __VERSION__ "2.95.3 20010112 (prerelease)"
# 0 "uthread_autoinit.c"
#define __SIZE_TYPE__ unsigned int
# 0 "uthread_autoinit.c"
#define __PTRDIFF_TYPE__ int
# 0 "uthread_autoinit.c"
#define __WCHAR_TYPE__ int
# 0 "uthread_autoinit.c"
#define __DATE__ "Mar 14 2001"
# 0 "uthread_autoinit.c"
#define __TIME__ "13:04:51"
# 0 "uthread_autoinit.c"
#define __STDC__ 1
# 0 "uthread_autoinit.c"
# 0 "uthread_autoinit.c"
# 0 "uthread_autoinit.c"
# 0 "uthread_autoinit.c"
# 0 "uthread_autoinit.c"
# 0 "uthread_autoinit.c"
# 0 "uthread_autoinit.c"
# 0 "uthread_autoinit.c"
# 0 "uthread_autoinit.c"
# 1 "uthread_autoinit.c"

extern void _thread_init(void);

void _thread_init_constructor(void) __attribute__((constructor));
void
_thread_init_constructor()
{
	_thread_init();
}

------------------------------------------------------------

	.file	"uthread_autoinit.c"
gcc2_compiled.:
___gnu_compiled_c:
.stabs "/tmp/",100,0,0,Ltext0
.stabs "uthread_autoinit.c",100,0,0,Ltext0
.text
Ltext0:
.stabs "int:t1=r1;0020000000000;0017777777777;",128,0,0,0
.stabs "char:t2=r2;0;127;",128,0,0,0
.stabs "long int:t3=r1;0020000000000;0017777777777;",128,0,0,0
.stabs "unsigned int:t4=r1;0000000000000;0037777777777;",128,0,0,0
.stabs "long unsigned int:t5=r1;0000000000000;0037777777777;",128,0,0,0
.stabs "long long int:t6=r1;01000000000000000000000;0777777777777777777777;",128,0,0,0
.stabs "long long unsigned int:t7=r1;0000000000000;01777777777777777777777;",128,0,0,0
.stabs "short int:t8=r8;-32768;32767;",128,0,0,0
.stabs "short unsigned int:t9=r9;0;65535;",128,0,0,0
.stabs "signed char:t10=r10;-128;127;",128,0,0,0
.stabs "unsigned char:t11=r11;0;255;",128,0,0,0
.stabs "float:t12=r1;4;0;",128,0,0,0
.stabs "double:t13=r1;8;0;",128,0,0,0
.stabs "long double:t14=r1;12;0;",128,0,0,0
.stabs "complex int:t15=s8real:1,0,32;imag:1,32,32;;",128,0,0,0
.stabs "complex float:t16=r16;4;0;",128,0,0,0
.stabs "complex double:t17=r17;8;0;",128,0,0,0
.stabs "complex long double:t18=r18;12;0;",128,0,0,0
.stabs "void:t19=19",128,0,0,0
	.align 2,0x90
.globl __thread_init_constructor
	.type	__thread_init_constructor , @function
__thread_init_constructor:
	pushl %ebp
	movl %esp,%ebp
	subl $8,%esp
	.stabd 68,0,8
	call __thread_init
	leave
	ret
	.stabd 68,0,9
	.size	__thread_init_constructor , . - __thread_init_constructor
.stabs "_thread_init_constructor:F19",36,0,7,__thread_init_constructor
	.align 2,0x90
.globl __GLOBAL_$I$uthread_autoinit.cgccvPa
	.type	__GLOBAL_$I$uthread_autoinit.cgccvPa , @function
__GLOBAL_$I$uthread_autoinit.cgccvPa:
LBB2:
	pushl %ebp
	movl %esp,%ebp
	subl $8,%esp
	.stabd 68,0,8
	call __thread_init
	leave
	ret
	.stabd 68,0,9
LBE2:
	.stabd 68,0,10
	.size	__GLOBAL_$I$uthread_autoinit.cgccvPa , . - __GLOBAL_$I$uthread_autoinit.cgccvPa
.stabs "_GLOBAL_$I$uthread_autoinit.cgccvPa:F19",36,0,10,__GLOBAL_$I$uthread_autoinit.cgccvPa
.stabn 192,0,0,LBB2
.stabn 192,0,0,LBB3
.stabn 224,0,0,LBE3
.stabn 224,0,0,LBE2
>How-To-Repeat:
compile this C source text

	extern void _thread_init(void);
	void _thread_init_constructor(void) __attribute__((constructor));
	void
	_thread_init_constructor()
	{
		_thread_init();
	}

with this command

	gcc -v -c  uthread_autoinit.c -g3 -O1 -finline-functions

in this environment

	Using builtin specs.
	gcc version 2.95.3 20010112 (prerelease)
	OpenBSD 2.8
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the Gcc-bugs mailing list