Hi,
I tried to find if default offset of 16 for handler is correct.
Disassemble command dump in GDB for transaction_manager_stub is given below.
(gdb) disassemble transaction_manager_stub
Dump of assembler code for function transaction_manager_stub:
0x000126a4 <transaction_manager_stub+0>: popf
0x000126a5 <transaction_manager_stub+1>: jecxz 0x12666
<tm_trap_handler+310>
0x000126a7 <transaction_manager_stub+3>: nop
0x000126a8 <transaction_manager_stub+4>: andb $0x0,-0x7fedffe0(%esi)
0x000126af <transaction_manager_stub+11>: adc %bl,0x1002010(%edx)
0x000126b5 <transaction_manager_stub+17>: add %al,(%eax)
0x000126b7 <transaction_manager_stub+19>: push %es
0x000126b8 <transaction_manager_stub+20>: add (%eax),%eax
0x000126ba <transaction_manager_stub+22>: add %cl,-0x50(%ecx)
0x000126bd <transaction_manager_stub+25>: adc %ah,0x30(%ecx)
0x000126c0 <transaction_manager_stub+28>: lahf
0x000126c1 <transaction_manager_stub+29>: movb $0x0,(%eax)
0x000126c4 <transaction_manager_stub+32>: nop
0x000126c5 <transaction_manager_stub+33>: adc %al,(%eax)
0x000126c7 <transaction_manager_stub+35>: add -0x7ffcfff0(%edx),%al
0x000126cd <transaction_manager_stub+41>: mov 0x80020060,%al
0x000126d2 <transaction_manager_stub+46>: add %al,0x2010b0
0x000126d8 <transaction_manager_stub+52>: add %eax,(%eax)
0x000126da <transaction_manager_stub+54>: add %al,(%edi)
0x000126dc <transaction_manager_stub+56>: add %eax,(%eax)
0x000126de <transaction_manager_stub+58>: add %cl,(%ebx)
0x000126e0 <transaction_manager_stub+60>: xor %al,0x10300(%eax)
0x000126e6 <transaction_manager_stub+66>: add %al,(%edi)
0x000126e8 <transaction_manager_stub+68>: add %eax,(%eax)
0x000126ea <transaction_manager_stub+70>: add %bl,(%ecx,%eax,4)
0x000126ed <transaction_manager_stub+73>: (bad)
0x000126ee <transaction_manager_stub+74>: loopne 0x126f8 <touch_log+4>
0x000126f0 <transaction_manager_stub+76>: sub $0x190000,%eax
End of assembler dump.
Looking at above dump, what should be actual offset??
What can happen if the offset is incorrect?
Thanks,
Anup
|