This is the mail archive of the gcc-bugs@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]
Other format: [Raw text]

More strange things with Hello gcc-3.0.4


While looking at strace, I see that for some reason on gcc-3.0.4 Linux
there is no buffering of std::cout.

Look at this - notice it's calling "write" for each character!

strace  ./Hello
execve("./Hello", ["./Hello"], [/* 44 vars */]) = 0
uname({sys="Linux", node="rpppc1.md.hns.com", ...}) = 0
brk(0)                                  = 0x804f3e0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40017000
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=110507, ...}) = 0
old_mmap(NULL, 110507, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40018000
close(3)                                = 0
open("/usr/lib/libstdc++.so.3", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\255"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=2804132, ...}) = 0
old_mmap(NULL, 608968, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40033000
mprotect(0x400b0000, 96968, PROT_NONE)  = 0
old_mmap(0x400b0000, 81920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x7c000) = 0x400b0000
old_mmap(0x400c4000, 15048, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x400c4000
close(3)                                = 0
open("/lib/i686/libm.so.6", O_RDONLY)   = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320H\0"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=624962, ...}) = 0
old_mmap(NULL, 142580, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x400c8000
mprotect(0x400ea000, 3316, PROT_NONE)   = 0
old_mmap(0x400ea000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x21000) = 0x400ea000
close(3)                                = 0
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\270\21"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=197016, ...}) = 0
old_mmap(NULL, 27256, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x400eb000
mprotect(0x400f1000, 2680, PROT_NONE)   = 0
old_mmap(0x400f1000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x6000) = 0x400f1000
close(3)                                = 0
open("/lib/i686/libc.so.6", O_RDONLY)   = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@\307\1"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=5779542, ...}) = 0
old_mmap(NULL, 1291464, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x400f2000
mprotect(0x40224000, 38088, PROT_NONE)  = 0
old_mmap(0x40224000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x131000) = 0x40224000
old_mmap(0x4022a000, 13512, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4022a000
close(3)                                = 0
munmap(0x40018000, 110507)              = 0
brk(0)                                  = 0x804f3e0
brk(0x804f418)                          = 0x804f418
brk(0x8050000)                          = 0x8050000
brk(0x8051000)                          = 0x8051000
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40018000
write(1, "h", 1h)                        = 1
write(1, "e", 1e)                        = 1
write(1, "l", 1l)                        = 1
write(1, "l", 1l)                        = 1
write(1, "o", 1o)                        = 1
write(1, " ", 1 )                        = 1
write(1, "w", 1w)                        = 1
write(1, "o", 1o)                        = 1
write(1, "r", 1r)                        = 1
write(1, "l", 1l)                        = 1
write(1, "d", 1d)                        = 1
write(1, "\n", 1
)                       = 1
open("/home/nbecker/Hello.da", O_WRONLY|O_APPEND|O_CREAT, 0666) = 3
fstat64(3, {st_mode=S_IFREG|0664, st_size=16, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40019000
fstat64(3, {st_mode=S_IFREG|0664, st_size=16, ...}) = 0
_llseek(3, 16, [16], SEEK_SET)          = 0
close(3)                                = 0
munmap(0x40019000, 4096)                = 0
write(2, "arc profiling: Can\'t open output"..., 62arc profiling: Can't open output file /home/nbecker/Hello.da.
) = 62
munmap(0x40018000, 4096)                = 0
_exit(0)                                = ?

Here's the code:

#include <iostream>
#include <stdexcept>

using std::cout;

main() {
  cout << "hello world\n";
}

Here's how we compiled:
g++3 -v -o Hello Hello.cc -Wall -O6 -ffast-math -fprofile-arcs -malign-functions=4 -fstrict-aliasing -g
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --host=i386-redhat-linux --with-system-zlib
Thread model: posix
gcc version 3.0.4 (Red Hat Linux 7.2 3.0.4-1)
 /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/cc1plus -v -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=4 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__OPTIMIZE__ -D__FAST_MATH__ -D__STDC_HOSTED__=1 -Wall -D_GNU_SOURCE -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__ Hello.cc -D__GNUG__=3 -D__GXX_DEPRECATED -D__EXCEPTIONS -D__GXX_ABI_VERSION=100 -quiet -dumpbase Hello.cc -malign-functions=4 -g -O6 -Wall -version -ffast-math -fprofile-arcs -fstrict-aliasing -o /tmp/ccTNvkiM.s
GNU CPP version 3.0.4 (Red Hat Linux 7.2 3.0.4-1) (cpplib) (i386 Linux/ELF)
GNU C++ version 3.0.4 (Red Hat Linux 7.2 3.0.4-1) (i386-redhat-linux)
	compiled by GNU C version 3.0.4 (Red Hat Linux 7.2 3.0.4-1).
ignoring nonexistent directory "/usr/i386-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/g++-v3
 /usr/include/g++-v3/i386-redhat-linux
 /usr/include/g++-v3/backward
 /usr/local/include
 /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/include
 /usr/include
End of search list.
Hello.cc:6: warning: ISO C++ forbids declaration of `main' with no type
 as -V -Qy -o /tmp/cccVpbXr.o /tmp/ccTNvkiM.s
GNU assembler version 2.11.90.0.8 (i386-redhat-linux) using BFD version 2.11.90.0.8
 /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/collect2 -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o Hello /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/../../../crt1.o /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/../../../crti.o /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/crtbegin.o -L/usr/lib/gcc-lib/i386-redhat-linux/3.0.4 -L/usr/lib/gcc-lib/i386-redhat-linux/3.0.4/../../.. /tmp/cccVpbXr.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/crtend.o /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/../../../crtn.o


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