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

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).