------- Comment #3 from entrophage at gmail dot com 2007-06-28 01:53 ------- valgrind of the resulting binary shows interesting output:
$ valgrind ./foo ==5107== Memcheck, a memory error detector. ==5107== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al. ==5107== Using LibVEX rev 1732, a library for dynamic binary translation. ==5107== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==5107== Using valgrind-3.2.3, a dynamic binary instrumentation framework. ==5107== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==5107== For more details, rerun with: -v ==5107== ==5107== Conditional jump or move depends on uninitialised value(s) ==5107== at 0x4A19FBDB: _dl_relocate_object (in /lib/ld-2.6.so) ==5107== by 0x4A1988D8: dl_main (in /lib/ld-2.6.so) ==5107== by 0x4A1A8F6A: _dl_sysdep_start (in /lib/ld-2.6.so) ==5107== by 0x4A1962B7: _dl_start (in /lib/ld-2.6.so) ==5107== by 0x4A195816: (within /lib/ld-2.6.so) ==5107== ==5107== Conditional jump or move depends on uninitialised value(s) ==5107== at 0x4A19FBE3: _dl_relocate_object (in /lib/ld-2.6.so) ==5107== by 0x4A1988D8: dl_main (in /lib/ld-2.6.so) ==5107== by 0x4A1A8F6A: _dl_sysdep_start (in /lib/ld-2.6.so) ==5107== by 0x4A1962B7: _dl_start (in /lib/ld-2.6.so) ==5107== by 0x4A195816: (within /lib/ld-2.6.so) ==5107== ==5107== Conditional jump or move depends on uninitialised value(s) ==5107== at 0x4A19FD25: _dl_relocate_object (in /lib/ld-2.6.so) ==5107== by 0x4A1988D8: dl_main (in /lib/ld-2.6.so) ==5107== by 0x4A1A8F6A: _dl_sysdep_start (in /lib/ld-2.6.so) ==5107== by 0x4A1962B7: _dl_start (in /lib/ld-2.6.so) ==5107== by 0x4A195816: (within /lib/ld-2.6.so) ==5107== ==5107== Conditional jump or move depends on uninitialised value(s) ==5107== at 0x4A1A001B: _dl_relocate_object (in /lib/ld-2.6.so) ==5107== by 0x4A1988D8: dl_main (in /lib/ld-2.6.so) ==5107== by 0x4A1A8F6A: _dl_sysdep_start (in /lib/ld-2.6.so) ==5107== by 0x4A1962B7: _dl_start (in /lib/ld-2.6.so) ==5107== by 0x4A195816: (within /lib/ld-2.6.so) ==5107== ==5107== Conditional jump or move depends on uninitialised value(s) ==5107== at 0x4A1A04F0: _dl_relocate_object (in /lib/ld-2.6.so) ==5107== by 0x4A1988D8: dl_main (in /lib/ld-2.6.so) ==5107== by 0x4A1A8F6A: _dl_sysdep_start (in /lib/ld-2.6.so) ==5107== by 0x4A1962B7: _dl_start (in /lib/ld-2.6.so) ==5107== by 0x4A195816: (within /lib/ld-2.6.so) ==5107== ==5107== Conditional jump or move depends on uninitialised value(s) ==5107== at 0x4A19FBDB: _dl_relocate_object (in /lib/ld-2.6.so) ==5107== by 0x4A198A84: dl_main (in /lib/ld-2.6.so) ==5107== by 0x4A1A8F6A: _dl_sysdep_start (in /lib/ld-2.6.so) ==5107== by 0x4A1962B7: _dl_start (in /lib/ld-2.6.so) ==5107== by 0x4A195816: (within /lib/ld-2.6.so) ==5107== ==5107== Conditional jump or move depends on uninitialised value(s) ==5107== at 0x4A19FBE3: _dl_relocate_object (in /lib/ld-2.6.so) ==5107== by 0x4A198A84: dl_main (in /lib/ld-2.6.so) ==5107== by 0x4A1A8F6A: _dl_sysdep_start (in /lib/ld-2.6.so) ==5107== by 0x4A1962B7: _dl_start (in /lib/ld-2.6.so) ==5107== by 0x4A195816: (within /lib/ld-2.6.so) ==5107== ==5107== Conditional jump or move depends on uninitialised value(s) ==5107== at 0x4A19FD25: _dl_relocate_object (in /lib/ld-2.6.so) ==5107== by 0x4A198A84: dl_main (in /lib/ld-2.6.so) ==5107== by 0x4A1A8F6A: _dl_sysdep_start (in /lib/ld-2.6.so) ==5107== by 0x4A1962B7: _dl_start (in /lib/ld-2.6.so) ==5107== by 0x4A195816: (within /lib/ld-2.6.so) 0; 0; 1; 0; ==5107== ==5107== ERROR SUMMARY: 12 errors from 8 contexts (suppressed: 0 from 0) ==5107== malloc/free: in use at exit: 0 bytes in 0 blocks. ==5107== malloc/free: 0 allocs, 0 frees, 0 bytes allocated. ==5107== For counts of detected errors, rerun with: -v ==5107== All heap blocks were freed -- no leaks are possible. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32531