C++ with elf-gcc-2.7.0.deb
Here's a simple C++ program that segfaults unexpectedly.
Maybe I overlooked some required flags (there is no g++-elf command).
The following transcript hopefully contains all relevant information:
bora:~/tmp$ cat /proc/version
Linux version 1.2.13 (bsb@bora) (gcc version 2.6.3) #17 Thu Oct 19 07:25:57 MET 1995
bora:~/tmp$ cat segv.C
#include <fstream.h>
#include <String.h>
int
main(int, char *[])
{
ifstream is("/proc/stats");
while ( is ) {
String head;
is >> head;
// ...
}
return 0;
}
bora:~/tmp$ gcc-elf -v -lstdc++ -lg++ segv.C
Reading specs from /usr/lib/gcc-lib/i486-linuxelf/2.7.0/specs
gcc version 2.7.0
/usr/lib/gcc-lib/i486-linuxelf/2.7.0/cpp -lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=7 -D__ELF__ -Dunix -Di386 -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__i386 -D__linux -Asystem(unix) -Asystem(posix) -Acpu(i386) -Amachine(i386) -D__i486__ segv.C /tmp/cca25281.ii
GNU CPP version 2.7.0 (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/g++-include
/usr/local/include
/usr/i486-linuxelf/include
/usr/lib/gcc-lib/i486-linuxelf/2.7.0/include
/usr/include
End of search list.
/usr/lib/gcc-lib/i486-linuxelf/2.7.0/cc1plus /tmp/cca25281.ii -quiet -dumpbase segv.cc -version -o /tmp/cca25281.s
GNU C++ version 2.7.0 (i386 Linux/ELF) compiled by GNU C version 2.7.0.
/usr/i486-linuxelf/bin/as -V -Qy -o /tmp/cca252811.o /tmp/cca25281.s
GNU assembler version cygnus/linux-2.5.2l.15 (i486-linux), using BFD version cygnus/linux-2.5.2l.20
/usr/i486-linuxelf/bin/ld -m elf_i386 -dynamic-linker /lib/ld-linux.so.1 /usr/i486-linuxelf/lib/crt1.o /usr/i486-linuxelf/lib/crti.o /usr/i486-linuxelf/lib/crtbegin.o -L/usr/lib/gcc-lib/i486-linuxelf/2.7.0 -L/usr/i486-linuxelf/lib -lstdc++ -lg++ /tmp/cca252811.o -lgcc -lc -lgcc /usr/i486-linuxelf/lib/crtend.o /usr/i486-linuxelf/lib/crtn.o
bora:~/tmp$ ldd segv
libstdc++.so.27 => /usr/i486-linuxelf/lib/libstdc++.so.27.0.2
libg++.so.27 => /usr/i486-linuxelf/lib/libg++.so.27.0.2
libc.so.5 => /usr/i486-linuxelf/lib/libc.so.5.2.7
libm.so.5 => /usr/i486-linuxelf/lib/libm.so.5.0.3
bora:~/tmp$ segv
Segmentation fault
bora:~/tmp$
The program is valid C++, so what's going on here?
-- Siggy (the middle S.)
Reply to: