public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/31407] New: [4.3 Regression] undefined reference to `vtable for x'
@ 2007-03-30 22:48 tbm at cyrius dot com
2007-03-30 22:58 ` [Bug c++/31407] " pinskia at gcc dot gnu dot org
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: tbm at cyrius dot com @ 2007-03-30 22:48 UTC (permalink / raw)
To: gcc-bugs
I'm not quite sure what's going on here. *Maybe* this is invalid code, but
I belive it's a compiler bug because the error goes away when I remove
completely
unrelated lines in the program. Anyway, I get the following with 4.3 (it
compiles with 4.1):
(sid)6870:tbm@em64t: ~] g++ -c -g -O -o test.o test.cc
(sid)6871:tbm@em64t: ~] g++ -o x test.o
test.o: In function `Timer':
/home/tbm/timer.h:13: undefined reference to `vtable for Timer'
test.o: In function `Timer::timerEnd()':
/home/tbm/timer.h:20: undefined reference to `Timer::ttime() const'
test.o: In function `~Timer':
/home/tbm/timer.h:16: undefined reference to `vtable for Timer'
/home/tbm/timer.h:16: undefined reference to `vtable for Timer'
collect2: ld returned 1 exit status
test.cc:
#include "timer.h"
#include <getopt.h>
#include <string>
enum {O_ROW_PLOT, O_VERSION};
static struct option my_options[] =
{
{"row-plot", 1, 0, O_ROW_PLOT},
{"version", 0, 0, O_VERSION},
{0, 0, 0, 0}
};
void test(double d) {
}
int main (int argc, char *const argv[])
{
std::string strOutFile;
Timer timerProgram;
while (1) {
char* endptr;
int c = getopt_long (argc, argv, "", my_options, NULL);
if (c == -1)
break;
switch (c) {
case O_ROW_PLOT:
strtol(optarg, &endptr, 10);
break;
case O_VERSION:
return (0);
}
}
test(timerProgram.timerEnd());
return (0);
}
timer.h:
#ifndef _TIMER_H
#define _TIMER_H
#pragma interface "timer.h"
#include <cstdlib>
#include <sys/time.h>
class Timer
{
public:
Timer (void)
{}
~Timer (void)
{}
virtual double timerEnd (void)
{
return ttime();
}
protected:
double ttime(void) const
{
struct timeval now;
gettimeofday (&now, NULL);
return 0;
}
};
#endif // _TIMER_H
--
Summary: [4.3 Regression] undefined reference to `vtable for x'
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tbm at cyrius dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31407
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/31407] [4.3 Regression] undefined reference to `vtable for x'
2007-03-30 22:48 [Bug c++/31407] New: [4.3 Regression] undefined reference to `vtable for x' tbm at cyrius dot com
@ 2007-03-30 22:58 ` pinskia at gcc dot gnu dot org
2007-03-30 23:02 ` tbm at cyrius dot com
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2007-03-30 22:58 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from pinskia at gcc dot gnu dot org 2007-03-30 23:58 -------
There is no `#pragma implementation ' so I don't think this is a bug.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31407
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/31407] [4.3 Regression] undefined reference to `vtable for x'
2007-03-30 22:48 [Bug c++/31407] New: [4.3 Regression] undefined reference to `vtable for x' tbm at cyrius dot com
2007-03-30 22:58 ` [Bug c++/31407] " pinskia at gcc dot gnu dot org
@ 2007-03-30 23:02 ` tbm at cyrius dot com
2007-03-30 23:06 ` tbm at cyrius dot com
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: tbm at cyrius dot com @ 2007-03-30 23:02 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from tbm at cyrius dot com 2007-03-31 00:01 -------
Any idea why it works when I remove completely unrelated lines, e.g.
if (c == -1)
break;
Is this just a coincidence?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31407
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/31407] [4.3 Regression] undefined reference to `vtable for x'
2007-03-30 22:48 [Bug c++/31407] New: [4.3 Regression] undefined reference to `vtable for x' tbm at cyrius dot com
2007-03-30 22:58 ` [Bug c++/31407] " pinskia at gcc dot gnu dot org
2007-03-30 23:02 ` tbm at cyrius dot com
@ 2007-03-30 23:06 ` tbm at cyrius dot com
2007-03-31 7:56 ` schwab at suse dot de
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: tbm at cyrius dot com @ 2007-03-30 23:06 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from tbm at cyrius dot com 2007-03-31 00:06 -------
(In reply to comment #1)
> There is no `#pragma implementation ' so I don't think this is a bug.
This doesn't seem to help either.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31407
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/31407] [4.3 Regression] undefined reference to `vtable for x'
2007-03-30 22:48 [Bug c++/31407] New: [4.3 Regression] undefined reference to `vtable for x' tbm at cyrius dot com
` (2 preceding siblings ...)
2007-03-30 23:06 ` tbm at cyrius dot com
@ 2007-03-31 7:56 ` schwab at suse dot de
2007-03-31 9:22 ` tbm at cyrius dot com
2007-04-01 0:01 ` pinskia at gcc dot gnu dot org
5 siblings, 0 replies; 7+ messages in thread
From: schwab at suse dot de @ 2007-03-31 7:56 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from schwab at suse dot de 2007-03-31 08:56 -------
You need to put it at the top of the file.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31407
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/31407] [4.3 Regression] undefined reference to `vtable for x'
2007-03-30 22:48 [Bug c++/31407] New: [4.3 Regression] undefined reference to `vtable for x' tbm at cyrius dot com
` (3 preceding siblings ...)
2007-03-31 7:56 ` schwab at suse dot de
@ 2007-03-31 9:22 ` tbm at cyrius dot com
2007-04-01 0:01 ` pinskia at gcc dot gnu dot org
5 siblings, 0 replies; 7+ messages in thread
From: tbm at cyrius dot com @ 2007-03-31 9:22 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from tbm at cyrius dot com 2007-03-31 10:22 -------
(In reply to comment #4)
> You need to put it at the top of the file.
That works. Still, a better diagnostic would be nice if that's possible.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31407
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/31407] [4.3 Regression] undefined reference to `vtable for x'
2007-03-30 22:48 [Bug c++/31407] New: [4.3 Regression] undefined reference to `vtable for x' tbm at cyrius dot com
` (4 preceding siblings ...)
2007-03-31 9:22 ` tbm at cyrius dot com
@ 2007-04-01 0:01 ` pinskia at gcc dot gnu dot org
5 siblings, 0 replies; 7+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2007-04-01 0:01 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from pinskia at gcc dot gnu dot org 2007-04-01 01:00 -------
Read:
http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/C_002b_002b-Interface.html
This is all documented there. Really "#pragma interface"/"#pragma
implementation" is useless for 99% of the code now adays because of comdat.
Yes people use older compilers but this is not our issue.
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31407
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2007-04-01 0:01 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-03-30 22:48 [Bug c++/31407] New: [4.3 Regression] undefined reference to `vtable for x' tbm at cyrius dot com
2007-03-30 22:58 ` [Bug c++/31407] " pinskia at gcc dot gnu dot org
2007-03-30 23:02 ` tbm at cyrius dot com
2007-03-30 23:06 ` tbm at cyrius dot com
2007-03-31 7:56 ` schwab at suse dot de
2007-03-31 9:22 ` tbm at cyrius dot com
2007-04-01 0:01 ` pinskia at gcc dot gnu dot org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).