Bug#27886: gcc-3.0 compilation problems (tokenizer.cc)

pienaar at bme.ri.ccf.org pienaar at bme.ri.ccf.org
Fri Jun 29 15:00:53 UTC 2001

Package: kdevelop
Version: 1.4.1 (using KDE 2.1.1 )
Severity: normal
Installed from:    Compiled From Sources
Compiler:          gcc-3.0
OS:                Linux
OS/Compiler notes: Not Specified

After "upgrading" to gcc-3.0, I noticed that my "old" kdevelop-1.4 (built with gcc 2.95.2) seemed to be having problems with code compiled with gcc-3.0.

Specifically, the integrated debugger was ignoring all breakpoints, rendering it largely useless.

I decided to rebuild kdevelop with gcc-3.0 (of course with rebuilt (gcc-3.0) Qt 2.3.1, and necessary kde-2.1.1/2 packages).

I had problems with arts-related issues in kdelibs-2.1.2 (this has already been reported as a bug).

With kdevelop, compilation failed with tokenizer.cc (<kdevelop-1.4.1/kdevelop/classparser/tokenizer.cc).

Specific problem:

flex -+ -otokenizer.cc ./tokenizer.l
g++ -DHAVE_CONFIG_H -I. -I. -I../.. -I/home/pienaar/arch/Linux/kde-2.1.1/include -I/home/pienaar/arch/Linux/qt-2.3.1/include -I/usr/X11R6/include     -O2 -fno-exceptions -fno-check-new -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Wno-long-long -Wnon-virtual-dtor
-fno-builtin  -c tokenizer.cc
In file included from /usr/include/FlexLexer.h:47,
                 from tokenizer.cc:238:
/home/pienaar/arch/Linux/include/g++-v3/backward/iostream.h:36: using directive
   `istream' introduced ambiguous type `istream'
tokenizer.cc: In member function `virtual int yyFlexLexer::yylex()':
tokenizer.cc:1318: cannot convert `std::istream*' to `istream*' in assignment
tokenizer.cc:905: warning: label `find_rule' defined but not used
tokenizer.cc: In member function `void yyFlexLexer::yy_load_buffer_state()':
tokenizer.cc:1849: cannot convert `istream*' to `std::istream*' in assignment
tokenizer.cc: In member function `void
   yyFlexLexer::yy_init_buffer(yy_buffer_state*, std::istream*)':
tokenizer.cc:1900: cannot convert `std::istream*' to `istream*' in assignment
/home/pienaar/arch/Linux/include/g++-v3/bits/locale_facets.tcc: At top level:
tokenizer.cc:2070: warning: `void* yy_flex_realloc(void*, unsigned int)'
   defined but not used
make[3]: *** [tokenizer.o] Error 1

I was able to recreate the same error with kdevelop-20010629 and gideon-0.2; in both instances `tokenizer' was the problem (although in these two packages, it was located in a slightly different path).

I was able to "fix" the errors in lines 1318 and 1849 by explicit typecasting to (iostream*):

	yy_current_buffer->yy_input_file = yyin;

to:	(iostream*) yy_current_buffer->yy_input_file = yyin;

But the real error seems to be:
/home/pienaar/arch/Linux/include/g++-v3/backward/iostream.h:36: using directive
   `istream' introduced ambiguous type `istream'

This seems endemic to gcc-3.0 and its stream-type, and is clearly quite out of my league.


| Rudolph Pienaar, M.Eng                        -w- (216) 445-3790      |
| Gait Lab, Biomedical Engineering ND20         -f- (216) 444-9198      |
| Cleveland Clinic Foundation, Cleveland, OH, 44195                     |

(Submitted via bugs.kde.org)

to unsubscribe from this list send an email to kdevelop-devel-request at kdevelop.org with the following body:
unsubscribe »your-email-address«

More information about the KDevelop-devel mailing list