(補足)
最初のいちばんオーソドックスな奴、一応解説としてbacktraceを貼っておきます。
% gdb ./a.out (gdb) b x if main>0 Breakpoint 1 at 0x80483ba: file iyara.c, line 1. (gdb) r Breakpoint 1, x () at iyara.c:1 1 main;__attribute((constructor,destructor))x(){main?puts("world!"):exit(main=puts("hello"));} (gdb) bt #0 x () at iyara.c:1 #1 0x0804837b in __do_global_dtors_aux () #2 0x08048494 in _fini () #3 0x00b5e0fd in _dl_fini () from /lib/ld-linux.so.2 #4 0x00b9798e in exit () from /lib/libc.so.6 #5 0x080483ef in x () at iyara.c:1 #6 0x08048465 in __do_global_ctors_aux () #7 0x080482b9 in _init () #8 0x08048416 in __libc_csu_init () #9 0x00b826c9 in __libc_start_main () from /lib/libc.so.6 #10 0x08048331 in _start ()
2度めのx()の呼び出しでのバックトレースです。これでようやく、先日のPTR_MANGLEのエントリと話がつながりました(_dl_fini)。いやそんなはずがない。