Thread View: gnu.gdb.bug
1 messages
1 total messages
Started by pardo
Tue, 04 Apr 1989 21:47
Possible gdb 2.8 bug: wrong function name.
Author: pardo
Date: Tue, 04 Apr 1989 21:47
Date: Tue, 04 Apr 1989 21:47
160 lines
4514 bytes
4514 bytes
The following code shows gdb giving the wrong name to a
function that contains a static const char. The names and
types of parameters (and hence their values) are hidden.
I suspect that this is a gdb problem, since `dbx' gets it
right. When the program is compiled with `cc', the same
thing happens. When compiled without `-g' the correct thing
happens (with either compiler).
Machine: VAX 8550, Ultrix 2.3. Gcc 1.34 (config.gcc),
gdb 2.8
gcc -g -Wall -ansi -v -c a.c
gcc version 1.34
/uns/usr/local/lib/gcc-cpp -v -undef -D__GNUC__ -T -$ -D__STRICT_ANSI__ -D__vax__ -D__unix__ -Wall a.c /tmp/cc000602.cpp
GNU CPP version 1.34
/uns/usr/local/lib/gcc-cc1 /tmp/cc000602.cpp -quiet -dumpbase a.c -g -Wall -ansi -version -o /tmp/cc000602.s
GNU C version 1.34 (vax) compiled by GNU C version 1.34.
a.c: In function zurk:
a.c:6: warning: implicit declaration of function `printf'
a.c: In function main:
a.c:15: warning: implicit declaration of function `exit'
as /tmp/cc000602.s -o a.o
Loading run ... done
a.c:
- --------
void
zurk (char const *s)
{
static char const * const wrong_name = "wrong!!!";
printf ("%s=%s\n", s, wrong_name);
}
int
main (int argc, char const * const * argv)
{
zurk ("ha!");
exit (0);
return (0);
}
- --------
a.s:
- --------
#NO_APP
gcc_compiled.:
.stabs "a.c",100,0,0,Ltext
Ltext:
.stabs "int:t1=r1;-2147483648;2147483647;",128,0,0,0
.stabs "char:t2=r2;0;127;",128,0,0,0
.stabs "long int:t3=r1;-2147483648;2147483647;",128,0,0,0
.stabs "unsigned int:t4=r1;0;-1;",128,0,0,0
.stabs "long unsigned int:t5=r1;0;-1;",128,0,0,0
.stabs "short int:t6=r1;-32768;32767;",128,0,0,0
.stabs "long long int:t7=r1;0;-1;",128,0,0,0
.stabs "short unsigned int:t8=r1;0;65535;",128,0,0,0
.stabs "long long unsigned int:t9=r1;0;-1;",128,0,0,0
.stabs "signed char:t10=r1;-128;127;",128,0,0,0
.stabs "unsigned char:t11=r1;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;8;0;",128,0,0,0
.stabs "void:t15=15",128,0,0,0
.text
.align 0
LC0:
.ascii "wrong!!!\0"
.align 2
_wrong_name.0:
.long LC0
.align 0
LC1:
.ascii "%s=%s\12\0"
.align 1
.globl _zurk
_zurk:
.stabd 68,0,3
.word 0x0
LBB2:
.stabd 68,0,6
pushl _wrong_name.0
pushl 4(ap)
pushab LC1
calls $3,_printf
LBE2:
.stabd 68,0,7
ret
.stabs "zurk:F15",36,0,0,_zurk
.stabs "s:p16=*2",160,0,0,4
.stabs "wrong_name:V16",36,0,0,_wrong_name.0
.stabn 192,0,0,LBB2
.stabn 224,0,0,LBE2
.align 0
LC2:
.ascii "ha!\0"
.align 1
.globl _main
_main:
.stabd 68,0,13
.word 0x0
.stabd 68,0,14
pushab LC2
calls $1,_zurk
.stabd 68,0,15
clrl -(sp)
calls $1,_exit
.stabd 68,0,16
clrl r0
ret
.stabd 68,0,17
ret
.stabs "main:F1",36,0,0,_main
.stabs "argc:p1",160,0,0,4
.stabs "argv:p17=*16",160,0,0,8
GDB 2.8, Copyright (C) 1988 Free Software Foundation, Inc.
There is ABSOLUTELY NO WARRANTY for GDB; type "info warranty" for details.
GDB is free software and you are welcome to distribute copies of it
under certain conditions; type "info copying" to see the conditions.
Reading symbol data from /u1/pardo/tmp/bug4/run...done.
Type "help" for a list of commands.
(gdb) break printf
Breakpoint 1 at 0xa2
(gdb) run
Starting program: /u1/pardo/tmp/bug4/run
Bpt 1, 0xa2 in printf (92, 125, 76)
(gdb) where
#0 0xa2 in printf (92, 125, 76)
#1 0x7c in wrong_name (125) (a.c line 6)
#2 0x91 in main (argc=1, argv=(char **) 0x7fffe078, 2147475584) (a.c line 14)
(gdb) up
#1 0x7c in wrong_name (125) (a.c line 6)
(gdb) list
1 void
2 zurk (char const *s)
3 {
4 static char const * const wrong_name = "wrong!!!";
5
6 printf ("%s=%s\n", s, wrong_name);
7 }
8
9
10
(gdb) print s
No symbol "s" in current context.
(gdb)
(Note: the function has the wrong name, the parameter is `125' instead
of something like `char *s=0d125 "ha!". Finally, the symbol is not
found by `print s'.)
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads