gdb でアセンブリコードを見てみる
see ぐあ間違えてリンクしてた - daily dayflower
んじゃ機械に近いアセンブリで覗こうと思って
(gdb) disassemble Dump of assembler code for function debug_add_class: <+0>: push %ebp <+1>: mov %esp,%ebp <+3>: sub $0x28,%esp <+6>: mov %edi,-0x4(%ebp) <+9>: mov 0x8(%ebp),%edi <+12>: mov %ebx,-0xc(%ebp) <+15>: call 0xb78c54b7 <__i686.get_pc_thunk.bx> <+20>: add $0x5edfc,%ebx <+26>: mov %esi,-0x8(%ebp) <+29>: test %edi,%edi <+31>: je 0xb791a452 <debug_add_class+66> <+33>: call 0xb791a5a0 <debug_init> <+38>: mov %edi,%eax <+40>: call 0xb791a3a0 <debug_lookup_classname_int> <+45>: test %eax,%eax <+47>: mov %eax,%esi <+49>: js 0xb791a459 <debug_add_class+73> <+51>: mov %esi,%eax <+53>: mov -0xc(%ebp),%ebx <+56>: mov -0x8(%ebp),%esi <+59>: mov -0x4(%ebp),%edi <+62>: mov %ebp,%esp <+64>: pop %ebp <+65>: ret <+66>: mov $0xffffffff,%esi <+71>: jmp 0xb791a443 <debug_add_class+51> <+73>: mov -0xec(%ebx),%eax <+79>: mov 0xb010(%ebx),%esi <+85>: mov (%eax),%edx <+87>: lea 0x64ec(%ebx),%eax <+93>: movl $0x1,0xc(%esp) <+101>: movl $0x4,0x4(%esp) <+109>: cmp %eax,%edx <+111>: sete %al <+114>: movzbl %al,%eax <+117>: sub $0x1,%eax <+120>: and %eax,%edx <+122>: lea 0x1(%esi),%eax <+125>: mov %edx,(%esp) <+128>: mov %eax,0x8(%esp) <+132>: call 0xb7931f40 <realloc_array>
<+73>
からがキモなんだけど挫折した。