g++ 2.95.2 bug report
Jay Baus
baus@roguewave.com
Mon Nov 29 13:41:00 GMT 1999
Hello,
The following is a bug report for the g++ 2.95.2 compiler.
It appears that template functions incorrectly handle const char array
arguments. Here's the example program:
$ cat bug.cpp
#include <stdio.h>
template <class charT>
void foo(const charT* b){
printf("\npointer address inside foo() -->%x\n",b);
}
int main(){
char a[]="char arrays -- ok.";
char *b="char ptrs -- ok";
const char c[]="const char arrays -- addresses not equal";
printf("\n%s:\npointer address passed to foo() -->%x",a,a);
foo(a);
printf("\n%s\npointer address passed to foo() -->%x",b,b);
foo(b);
printf("\n%s\npointer address passed to foo() -->%x",c,c);
foo(c);
return 0;
}
The output on my machine is:
$ ./bug
char arrays -- ok.:
pointer address passed to foo() -->bffffa14
pointer address inside foo() -->bffffa14
char ptrs -- ok
pointer address passed to foo() -->8048933
pointer address inside foo() -->8048933
const char arrays -- addresses not equal
pointer address passed to foo() -->bffff9e4
pointer address inside foo() -->8048960
Compilation details:
$ g++ -v -c bug.cpp
Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/specs
gcc version 2.95.2 19991024 (release)
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/cpp -lang-c++ -v -D__GNUC__=2
-D__GNU
G__=2 -D__GNUC_MINOR__=95 -D__cplusplus -D__ELF__ -Dunix -D__i386__ -Dlinux
-D__
ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux -Asystem(posix)
-D__E
XCEPTIONS -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -Di686
-Dpentiu
mpro -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__ bug.cpp
/tmp/ccKPQffp.i
i
GNU CPP version 2.95.2 19991024 (release) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../include/g++-3
/usr/local/include
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../i686-pc-linux-gnu/incl
ude
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/include
/usr/include
End of search list.
The following default directories have been omitted from the search path:
End of omitted list.
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/cc1plus /tmp/ccKPQffp.ii -quiet
-dump
base bug.cc -version -o /tmp/ccYxuoeF.s
GNU C++ version 2.95.2 19991024 (release) (i686-pc-linux-gnu) compiled by
GNU C
version 2.95.2 19991024 (release).
as -V -Qy -o bug.o /tmp/ccYxuoeF.s
GNU assembler version 2.9.1 (i386-redhat-linux), using BFD version
2.9.1.0.23
$ g++ -v bug.o -o bug
Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/specs
gcc version 2.95.2 19991024 (release)
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/collect2 -m elf_i386
-dynamic-linker
/lib/ld-linux.so.2 -o bug /usr/lib/crt1.o /usr/lib/crti.o
/usr/lib/gcc-lib/i686-
pc-linux-gnu/2.95.2/crtbegin.o -L/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2
bug.o
-lstdc++ -lm -lgcc -lc -lgcc
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/crtend.o
/usr/lib/crtn.o
Thank You,
Jay Baus
=========================
Jay M. Baus, Software Engineer
Rogue Wave Software, Inc.
(303)545-3197 baus@roguewave.com
=========================
More information about the Gcc-bugs
mailing list