This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Linking problem with IRIX 6.5 and OpenGL


Hi,

I'm trying to use egcs 1.1.2  to compile some OpenGL programs under IRIX 6.5
The code compiles okay (albeit with some preempt type messages), but then 
gives a segmentation fault on execution.


Here is an example piece:

example.C:
----
#include <iostream>
#include <GL/glut.h>

void draw (void) {
}

int main (int argc, char **argv) {
  glutInit (&argc, argv);
  glutInitDisplayMode (GLUT_RGBA);
  glutCreateWindow("hello");
  glutDisplayFunc(draw);

  cout << "hello" << endl << flush;
  glutMainLoop ();
}
----


compiled with:
g++ -Wall example.C -lglut -lGL -lGLU -lXmu -lXext -lX11


gives this warning:
ld32: WARNING 85: definition of __throw in
/usr/local/lib/gcc-lib/mips-sgi-irix6.5/egcs-2.91.66/libgcc.a(_eh.o)
preempts that definition in /usr/lib32/libC.so.2.
ld32: WARNING 85: definition of __dynamic_cast in
/usr/local/lib/gcc-lib/mips-sgi-irix6.5/egcs-2.91.66/libgcc.a(tinfo2.o)
preempts that definition in /usr/lib32/libC.so.2.
ld32: WARNING 85: definition of cin in
/usr/local/lib/libstdc++.a(stdstreams.o) preempts that definition in
/usr/lib32/libC.so.2.
ld32: WARNING 85: definition of cout in
/usr/local/lib/libstdc++.a(stdstreams.o) preempts that definition in
/usr/lib32/libC.so.2.
ld32: WARNING 85: definition of cerr in
/usr/local/lib/libstdc++.a(stdstreams.o) preempts that definition in
/usr/lib32/libC.so.2.
ld32: WARNING 85: definition of clog in
/usr/local/lib/libstdc++.a(stdstreams.o) preempts that definition in
/usr/lib32/libC.so.2.


and then segmentation faults when i run it.
Process 10193 (a.out) stopped on signal SIGSEGV: Segmentation violation
(default) at [ios::init(streambuf*):43 ,0xac915dc]
         Source (of
/lv7/mtibuild/v721/workarea/v7.2+/libC/iostreams/stream.cxx) not
available for Process 10193
(dbx) >  0 ios::init(streambuf*)(0x0, 0x10042098, 0x10042098,
0x10042098, 0xffffffff, 0x0, 0x3, 0xacd328c)
["/lv7/mtibuild/v721/workarea/v7.2+/libC/iostreams/stream.cxx":43,
0xac915dc]
   1 ostream_withassign::operator=(streambuf*)(0x10040b88, 0x10042098,
0x10042098, 0x10042098, 0xffffffff, 0x0, 0x3, 0xacd328c)
["/lv7/mtibuild/v721/workarea/v7.2+/libC/iostreams/stream.cxx":290,
0xac92b24]
   2 Iostream_init::Iostream_init(void)(0x1, 0x10042098, 0x10042098,
0x10042098, 0xffffffff, 0x0, 0x3, 0xacd328c)
["/lv7/mtibuild/v721/workarea/v7.2+/libC/iostreams/cstreams.cxx":63,
0xac852b8]
   3 ::_main(0x0, 0x10042098, 0x10042098, 0x10042098, 0xffffffff, 0x0,
0x3, 0xacd328c)
["/lv7/mtibuild/v721/workarea/v7.2+/libC/lang_support/c++init.cxx":77,
0xac7f974]
   4 init_bridge(0x0, 0x0, 0x10042098, 0x10042098, 0xffffffff, 0x0, 0x3,
0xacd328c)
["/comp2/mtibuild/v7212m/workarea/v7.2.1.2m/rld/rld_bridge.s":257,
0xfb6045c]
   5 call_init(0xfbe6150, 0x10042098, 0x10042098, 0x10042098,
0xffffffff, 0x0, 0x3, 0xacd328c)
["/comp2/mtibuild/v7212m/workarea/v7.2.1.2m/rld/rld.c":3689, 0xfb66d84]
   6 run_init_code(0xfbe6150, 0x10042098, 0x10042098, 0x10042098,
0xffffffff, 0x0, 0x3, 0xacd328c)
["/comp2/mtibuild/v7212m/workarea/v7.2.1.2m/rld/rld.c":3756, 0xfb66dd4]
   7 forall_previous_objs(0xfbdc418, 0xfbe8190, 0x10042098, 0x10042098,
0xffffffff, 0x0, 0x3, 0xacd328c)
["/comp2/mtibuild/v7212m/workarea/v7.2.1.2m/rld/list.c":263, 0xfb61544]
   8 execute_all_init_sections(0x0, 0x10042098, 0x10042098, 0x10042098,
0xffffffff, 0x0, 0x3, 0xacd328c)
["/comp2/mtibuild/v7212m/workarea/v7.2.1.2m/rld/rld.c":3805, 0xfb66f30]
   9 do_initial_resolutions_and_run_inits(0x0, 0x10042098, 0x10042098,
0x10042098, 0xffffffff, 0x0, 0x3, 0xacd328c)
["/comp2/mtibuild/v7212m/workarea/v7.2.1.2m/rld/rld_startup.c":1137,
0xfb6fd34]
   10 sgi_main(0x0, 0x1, 0x7fff2f14, 0x10042098, 0xffffffff, 0x0, 0x3,
0xacd328c)
["/comp2/mtibuild/v7212m/workarea/v7.2.1.2m/rld/rld_startup.c":1517,
0xfb702dc]
   11 newmain()
["/comp2/mtibuild/v7212m/workarea/v7.2.1.2m/rld/rld_newmain.s":68,
0xfb60184]



If I remove the cout line and #include <iostream> I only get this error
on linking:
ld32: WARNING 84: /usr/local/lib/libstdc++.a is not used for resolving
any symbol.
and it runs okay.


It seems that it is linking in the system libC.so instead of libstdc++
but I don't know how these things work.


Thanks,
Phil
--
Philip Dunstan               dunstan@ee.uwa.edu.au
PhD student (IT Eng)         http://ciips.ee.uwa.edu.au/~dunstan
entre for Intelligent Information Processing Systems
University of Western Australia  

"Beware of bugs in the above code; I have only proved it correct, not
tried it."
      -- Donald Knuth 




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]