(補足)
最初のいちばんオーソドックスな奴、一応解説として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)。いやそんなはずがない。