From: dir@lookout.IT.USwc.USwest.COM (Daniel I. Rosenblatt)
Subject: gdb-4.6 vs Sun's acc
Organization: GNUs Not Usenet
Distribution: gnu
Date: Tue, 25 Aug 1992 03:22:47 GMT

Both gcc (2.2.2) and Sun's standard cc work fine with gdb-4.6.
Sun's acc generates somewhat different symbol table info which causes
gdb-4.6 to abort.  My configuration is a Sun 4/670 running SunOS 4.1.2.
I built gdb-4.6 with gcc-2.2.2 and 'configure sparc'.  Here is a session
demonstrating the problem:
------------------------------------------------------------------------
Script started on Tue Aug 25 09:15:14 1992
kmongo_jr% cat tst.c
main(argc, argv)
int argc;
char *argv[];
{
	int i = 7, j = 19;
	double x = 2.3;

	printf("%d %d %f\n", i, j, x);
	abort();
}
kmongo_jr% /home/lang/acc -g -S tst.c
kmongo_jr% cat tst.s
	.stabs	"/home/dir/gdb-4.6/",0x64,0,0,LL0
	.stabs	"tst.c",0x64,0,0,LL0
LL0:
	.seg	"data"
	.stabs	"int:t(0,1)=r(0,1);-2147483648;2147483647;",0x80,0,0,0
	.stabs	"char:t(0,2)=r(0,2);0;127;",0x80,0,0,0
	.stabs	"short:t(0,3)=r(0,1);-32768;32767;",0x80,0,0,0
	.stabs	"long:t(0,4)=r(0,1);-2147483648;2147483647;",0x80,0,0,0
	.stabs	"unsigned char:t(0,5)=r(0,1);0;255;",0x80,0,0,0
	.stabs	"unsigned short:t(0,6)=r(0,1);0;65535;",0x80,0,0,0
	.stabs	"unsigned int:t(0,7)=r(0,1);0;-1;",0x80,0,0,0
	.stabs	"unsigned long:t(0,8)=r(0,1);0;-1;",0x80,0,0,0
	.stabs	"signed char:t(0,9)=r(0,1);-128;127;",0x80,0,0,0
	.stabs	"signed short:t(0,10)=r(0,1);-32768;32767;",0x80,0,0,0
	.stabs	"signed int:t(0,11)=r(0,1);-2147483648;2147483647;",0x80,0,0,0
	.stabs	"signed long:t(0,12)=r(0,1);-2147483648;2147483647;",0x80,0,0,0
	.stabs	"float:t(0,13)=r(0,1);4;0;",0x80,0,0,0
	.stabs	"double:t(0,14)=r(0,1);8;0;",0x80,0,0,0
	.stabs	"long double:t(0,15)=r(0,1);16;0;",0x80,0,0,0
	.stabs	"void:t(0,16)=(0,16)",0x80,0,0,0
	!.file	"tst.c"
	.stabs	"main:F(0,1)",0x20,0,4,0
	.seg	"data1"
	.align	4
L16:
	.ascii	"%d %d %f\n\0"
	.seg	"text"
	.proc	04
	.global	_main

	.align	4
_main:
	!#PROLOGUE# 0
	sethi	%hi(LF12),%g1
	add	%g1,%lo(LF12),%g1
	save	%sp,%g1,%sp
	!#PROLOGUE# 1
L14:
	.seg	"text"
	.stabs	"argc:p(0,1)",0xa0,0,4,68
	.stabs	"argv:p(0,17)=*(0,18)=*(0,2)",0xa0,0,4,72
	.stabn	0300,0,1,LL1
LL1:
	.stabs	"i:(0,1)",0x80,0,4,-4
	.stabn	0104,0,5,LL2
LL2:
	mov	0x7,%o0
	st	%o0,[%fp+-0x4]
	.stabs	"j:(0,1)",0x80,0,4,-8
	.stabn	0104,0,5,LL3
LL3:
	mov	0x13,%o0
	st	%o0,[%fp+-0x8]
	.stabs	"x:(0,14)",0x80,0,8,-16
	.stabn	0104,0,6,LL4
LL4:
	sethi	%hi(L2000000),%o0
	ldd	[%o0+%lo(L2000000)],%f0
	std	%f0,[%fp+-0x10]
	.stabn	0104,0,8,LL5
LL5:
	.seg	"text"
	set	L16,%o0
	ld	[%fp+-0x4],%o1
	ld	[%fp+-0x8],%o2
	ldd	[%fp+-0x10],%o4
	mov	%o4,%o3
	mov	%o5,%o4
	call	_printf,5
	nop
	.stabn	0104,0,9,LL6
LL6:
	call	_abort,0
	nop
	.stabn	0340,0,1,LL7
LL7:
	.stabn	0104,0,10,LL8
LL8:
LE12:
	ret
	restore
	.optim	"-O~Q~R~S"
       LF12 = -112
	LP12 = 96
	LST12 = 96
	LT12 = 96
	.seg	"data"
	.align	8
L2000000:	.word	0x40026666,0x66666666
	!ident	"acomp: (CDS) SunOS5.0 IDR3.5 (H6.1) 11/01/90"
kmongo_jr% /home/lang/acc -g tst.c -o tst
kmongo_jr% gdb tst
GDB is free software and you are welcome to distribute copies of it
 under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.6, Copyright 1992 Free Software Foundation, Inc...
(gdb) break main
Segmentation fault (core dumped)
kmongo_jr% gdb gdb core
GDB is free software and you are welcome to distribute copies of it
 under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.6, Copyright 1992 Free Software Foundation, Inc...
Core was generated by `gdb'.
Program terminated with signal 11, Segmentation fault.
#0  0x33670 in decode_line_1 (argptr=0xf7fff814, funfirstline=1, 
    default_symtab=0x0, default_line=0) at symtab.c:1803
1803		  pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) + FUNCTION_START_OFFSET;
(gdb) list
1798	  if (sym != NULL)
1799	    {
1800	      if (SYMBOL_CLASS (sym) == LOC_BLOCK)
1801		{
1802		  /* Arg is the name of a function */
1803		  pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) + FUNCTION_START_OFFSET;
1804		  if (funfirstline)
1805		    SKIP_PROLOGUE (pc);
1806		  val = find_pc_line (pc, 0);
1807	#ifdef PROLOGUE_FIRSTLINE_OVERLAP
(gdb) print sym
$1 = (struct symbol *) 0x158408
(gdb) print *sym
$2 = {name = 0x158428 "main", namespace = VAR_NAMESPACE, class = LOC_BLOCK, 
  type = 0x1593a0, line = 0, value = {value = 0, block = 0x0, bytes = 0x0, 
    address = 0, chain = 0x0}, aux_value = {basereg = {regno_valid = 0, 
      regno = 0}}}
(gdb) print *sym->type
$3 = {code = TYPE_CODE_FUNC, name = 0x0, length = 1, objfile = 0x156f08, 
  target_type = 0x159078, pointer_type = 0x0, reference_type = 0x0, 
  function_type = 0x0, flags = 0, nfields = 0, fields = 0x0, 
  vptr_basetype = 0x0, vptr_fieldno = -1, type_specific = {arg_types = 0x0, 
    cplus_stuff = 0x0}}
(gdb) quit
kmongo_jr% exit
kmongo_jr% 
script done on Tue Aug 25 09:17:30 1992


If you need more info, contact me at
dir@lookout.uswest.com
303/595-2854

Thanx

Newsgroups: gnu.gdb.bug