Possible code generation bug using virtual destructors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



IDE Netbeans 7.2
GDB: 7.3.50.20111026-cvs (cygwin-special)
GCC:  4.5.3 (for cygwin)

Assembly language and register values included as an attachment. Each section is 
separated by '========'. There are are five section; {1} operator new() source 
code, given below, {2} disassembly of code when a virtual base class destructor 
is used; (3) register values immediately before the failure; (4) disassembly of 
code when a virtual base class destructor is not used; (5) register values 
before the final call.


I have a direct call to a concrete destructor (delete header) in a derived 
class. The code generated when the base class constructor is virtual is 
different then when the base class destructor is not virtual. The code generated 
fails when the base class destructor is virtual and works correctly when the 
base class destructor is not virtual.

Without going into too much detail, I am reimplementing Weizenbaum's SLIP in 
C++. I use my own memory allocator. When memory is deleted it is put at the end 
of a list of available space. Allocation is from the front of the available 
space list. A sublist contains a pointer to the header of a list. During 
allocation when the allocated space refers to a sublist then the associated 
header contained in the sublist is deleted. The failure occurs in the inline 
code associated with 'delete header'. Assembly language 'call' statement used 
register eax which contains a zero, generating a fault on the call.

It is quite possible that I haven't implemented or understood the  care and 
feeding of virtual destructors. But a single line change  causing this type of 
damage is baffling, and all the non-sublist deletes  seem to work correctly. 
Sigh.

If I haven't said things  correctly or if the things said are muddled and lack 
reason, please correct me, don't punish me.

The base class destructor is ~SlipCell() { } in the base class header file.

The allocation code in the file SlipCell.cpp is; "operator new(size_t size);
    void * SlipCellBase::operator new(size_t size) {    // Create a new SLIP 
cell
       SlipCellBase* link;
       do  {
         if (avsl.top == NULL) {
            SlipCellBase::getAVSLSpace();
         }
         link = (SlipCellBase*)avsl.top;
         avsl.top = avsl.top->rightLink;
         avsl.avail--;
       } while((long)link == TEMPORARY );
       SlipOp* op = *(SlipOp**)link->getOperator();
       if (op->isSublist()) {
          SlipHeader* header = *(SlipHeader**)getSublistHeader(*link);
          cout << link->dump() << endl
                  << header->dump() << endl << flush;
          delete header; // <== point of failure
       }
       
           /* Zero Cell */
       link->setOperator((void*)undefinedOP);
       link->rightLink = link->leftLink = (SlipCellBase*)UNDEFDATA;
       link->resetData();
       return link;
    }; // void * SlipCellBase::operator new(size_t size)

The inline delete method in the file SlipHeader.h is:


         ~SlipHeader() { deleteHeader(); }; // ~SlipHeader()

         void deleteHeader() {
            if (*(getHeadRefCnt()) <= 1) {
               addAVSLCells( this             // pointer to first cell
                           , getLeftLink());  // pointer to last cell
            } else 
               *(getHeadRefCnt()) -= 1;
         }; // void deleteHeader()
virtual ~SlipCell() { } // virtual base class destructor

SlipCellBase::operator new(size_t size);

Source Code in SlipCell.cpp
    void * SlipCellBase::operator new(size_t size) {    // Create a new SLIP cell
       SlipCellBase* link;
       do  {
         if (avsl.top == NULL) {
            SlipCellBase::getAVSLSpace();
         }
         link = (SlipCellBase*)avsl.top;
         avsl.top = avsl.top->rightLink;
         avsl.avail--;
       } while((long)link == TEMPORARY );
       SlipOp* op = *(SlipOp**)link->getOperator();
       if (op->isSublist()) {
          SlipHeader* header = *(SlipHeader**)getSublistHeader(*link);
          cout << link->dump() << endl
                  << header->dump() << endl << flush;
          delete header; // <== point of failure. Code generated
                         //     is different for virtual vs. 
                         //     non-virtual base class destructor
       }
       
       
===================================================

Disassembly of a portion of the operator new() code witha virtual base class
!          cout << link->dump() << endl
_fu31___ZSt4cout+72: lea    -0x18(%ebp),%eax
_fu31___ZSt4cout+75: mov    %eax,(%esp)
_fu31___ZSt4cout+78: call   0x45d8e0 <_ZNSsD1Ev>
_fu31___ZSt4cout+181: lea    -0x18(%ebp),%eax
_fu31___ZSt4cout+184: mov    %eax,(%esp)
_fu31___ZSt4cout+187: call   0x45d8e0 <_ZNSsD1Ev>
_fu31___ZSt4cout+192: jmp    0x43dfa4 <_fu31___ZSt4cout+196>
_fu31___ZSt4cout+194: mov    %eax,%ebx
!                  << header->dump() << endl << flush;
_fu31___ZSt4cout+25: lea    -0x1c(%ebp),%edx
_fu31___ZSt4cout+28: mov    %edx,0x4(%esp)
_fu31___ZSt4cout+32: mov    %eax,(%esp)
_fu31___ZSt4cout+35: call   0x45d900 <_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E>
_fu31___ZSt4cout+40: movl   $0x45d8e8,0x4(%esp)
_fu31___ZSt4cout+48: mov    %eax,(%esp)
_fu31___ZSt4cout+51: call   0x45d908 <_ZNSolsEPFRSoS_E>
_fu31___ZSt4cout+56: movl   $0x45d8f0,0x4(%esp)
_fu31___ZSt4cout+64: mov    %eax,(%esp)
_fu31___ZSt4cout+67: call   0x45d908 <_ZNSolsEPFRSoS_E>
_fu31___ZSt4cout+83: lea    -0x1c(%ebp),%eax
_fu31___ZSt4cout+86: mov    %eax,(%esp)
_fu31___ZSt4cout+89: call   0x45d8e0 <_ZNSsD1Ev>
_fu31___ZSt4cout+196: lea    -0x1c(%ebp),%eax
_fu31___ZSt4cout+199: mov    %eax,(%esp)
_fu31___ZSt4cout+202: call   0x45d8e0 <_ZNSsD1Ev>
_fu31___ZSt4cout+207: mov    %ebx,%eax
_fu31___ZSt4cout+209: mov    %eax,(%esp)
_fu31___ZSt4cout+212: call   0x45da90 <_Unwind_Resume>
_fu31___ZSt4cout+217: nop
!          delete header;
_fu31___ZSt4cout()
_fu31___ZSt4cout+94: cmpl   $0x0,-0x14(%ebp)
_fu31___ZSt4cout+98: je     0x43df56 <_fu31___ZSt4cout+118>
_fu31___ZSt4cout+100: mov    -0x14(%ebp),%eax
_fu31___ZSt4cout+103: mov    (%eax),%eax
_fu31___ZSt4cout+105: add    $0x10,%eax
_fu31___ZSt4cout+108: mov    (%eax),%edx
_fu31___ZSt4cout+110: mov    -0x14(%ebp),%eax
_fu31___ZSt4cout+113: mov    %eax,(%esp)
_fu31___ZSt4cout+116: call   *%edx    ; <== point of failure w/ edx == 0
!       }
!       
!           /* Zero Cell */
!       link->setOperator((void*)undefinedOP);
_fu31___ZSt4cout+118: mov    0x48a390,%eax
_fu31___ZSt4cout+123: mov    %eax,0x4(%esp)
_fu31___ZSt4cout+127: mov    -0xc(%ebp),%eax
_fu31___ZSt4cout+130: mov    %eax,(%esp)
_fu31___ZSt4cout+133: call   0x43dfd4 <slip::SlipCellBase::setOperator(void*)>
!       link->rightLink = link->leftLink = (SlipCellBase*)UNDEFDATA;
_fu31___ZSt4cout+138: mov    -0xc(%ebp),%eax
_fu31___ZSt4cout+141: movl   $0xdeadbeef,0x8(%eax)
_fu31___ZSt4cout+148: mov    -0xc(%ebp),%eax
_fu31___ZSt4cout+151: mov    0x8(%eax),%edx
_fu31___ZSt4cout+154: mov    -0xc(%ebp),%eax
_fu31___ZSt4cout+157: mov    %edx,0xc(%eax)
!       link->resetData();
_fu31___ZSt4cout+160: mov    -0xc(%ebp),%eax
_fu31___ZSt4cout+163: mov    %eax,(%esp)
_fu31___ZSt4cout+166: call   0x45ee8c <slip::SlipCellBase::resetData()>
!       return link;
_fu31___ZSt4cout+171: mov    -0xc(%ebp),%eax
!    }; // void * SlipCellBase::operator new(size_t size)
_fu31___ZSt4cout+174: mov    -0x4(%ebp),%ebx
_fu31___ZSt4cout+177: leave  
_fu31___ZSt4cout+178: ret    
_fu31___ZSt4cout+179: mov    %eax,%ebx

==============================================================
   register values immediately before the point of failure
eax	0x8006bdd0
ecx	0x0
edx	0x0
ebx	0x8006bdb8
esp	0x28ab20
ebp	0x28ab58
esi	0x28abb4
edi	0x28ab98
eip	0x43df54
eflags	0x206
cs	0x23
ss	0x2b
ds	0x2b
es	0x2b
fs	0x53
gs	0x2b
st0	0x0
st1	0x0
st2	0x0
st3	0x0
st4	0x0
st5	0x0
st6	0x2
st7	0x0
fctrl	0x37f
fstat	0x20
ftag	0xffff
fiseg	0x23
fioff	0x61160d94
foseg	0x2b
fooff	0x28a574
fop	0x0
xmm0	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm1	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm2	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm3	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm4	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm5	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm6	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm7	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
mxcsr	0x1f80
al	0xd0
cl	0x0
dl	0x0
bl	0xb8
ah	0xbd
ch	0x0
dh	0x0
bh	0xbd
ax	0xbdd0
cx	0x0
dx	0x0
bx	0xbdb8
bp	0xab58
si	0xabb4
di	0xab98
mm0	{uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm1	{uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm2	{uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm3	{uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm4	{uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm5	{uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm6	{uint64 = 0x8000000000000000, v2_int32 = {0x0, 0x80000000}, v4_int16 = {0x0, 0x0, 0x0, 0x8000}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}}
mm7	{uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}

========================================================================================
~SlipCell() { } // non-virtual base class destructor
A portion of the generated code

!          cout << link->dump() << endl
_fu31___ZSt4cout+72: lea    -0x18(%ebp),%eax
_fu31___ZSt4cout+75: mov    %eax,(%esp)
_fu31___ZSt4cout+78: call   0x45d8c0 <_ZNSsD1Ev>
_fu31___ZSt4cout+180: lea    -0x18(%ebp),%eax
_fu31___ZSt4cout+183: mov    %eax,(%esp)
_fu31___ZSt4cout+186: call   0x45d8c0 <_ZNSsD1Ev>
_fu31___ZSt4cout+191: jmp    0x43df7b <_fu31___ZSt4cout+195>
_fu31___ZSt4cout+193: mov    %eax,%ebx
!                  << header->dump() << endl << flush;
_fu31___ZSt4cout+25: lea    -0x1c(%ebp),%edx
_fu31___ZSt4cout+28: mov    %edx,0x4(%esp)
_fu31___ZSt4cout+32: mov    %eax,(%esp)
_fu31___ZSt4cout+35: call   0x45d8e0 <_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E>
_fu31___ZSt4cout+40: movl   $0x45d8c8,0x4(%esp)
_fu31___ZSt4cout+48: mov    %eax,(%esp)
_fu31___ZSt4cout+51: call   0x45d8e8 <_ZNSolsEPFRSoS_E>
_fu31___ZSt4cout+56: movl   $0x45d8d0,0x4(%esp)
_fu31___ZSt4cout+64: mov    %eax,(%esp)
_fu31___ZSt4cout+67: call   0x45d8e8 <_ZNSolsEPFRSoS_E>
_fu31___ZSt4cout+83: lea    -0x1c(%ebp),%eax
_fu31___ZSt4cout+86: mov    %eax,(%esp)
_fu31___ZSt4cout+89: call   0x45d8c0 <_ZNSsD1Ev>
_fu31___ZSt4cout+195: lea    -0x1c(%ebp),%eax
_fu31___ZSt4cout+198: mov    %eax,(%esp)
_fu31___ZSt4cout+201: call   0x45d8c0 <_ZNSsD1Ev>
_fu31___ZSt4cout+206: mov    %ebx,%eax
_fu31___ZSt4cout+208: mov    %eax,(%esp)
_fu31___ZSt4cout+211: call   0x45da70 <_Unwind_Resume>
!          delete header;   // <== no failure, the generated code is different
_fu31___ZSt4cout()
_fu31___ZSt4cout+94: mov    -0x14(%ebp),%ebx
_fu31___ZSt4cout+97: test   %ebx,%ebx
_fu31___ZSt4cout+99: je     0x43df2d <_fu31___ZSt4cout+117>
_fu31___ZSt4cout+101: mov    %ebx,(%esp)
_fu31___ZSt4cout+104: call   0x45e7cc <slip::SlipHeader::~SlipHeader()>
_fu31___ZSt4cout+109: mov    %ebx,(%esp)
_fu31___ZSt4cout+112: call   0x45eefc <slip::SlipCellBase::operator delete(void*)>
!       }
!       
!           /* Zero Cell */
!       link->setOperator((void*)undefinedOP);
_fu31___ZSt4cout+117: mov    0x48a390,%eax
_fu31___ZSt4cout+122: mov    %eax,0x4(%esp)
_fu31___ZSt4cout+126: mov    -0xc(%ebp),%eax
_fu31___ZSt4cout+129: mov    %eax,(%esp)
_fu31___ZSt4cout+132: call   0x43dfaa <slip::SlipCellBase::setOperator(void*)>
!       link->rightLink = link->leftLink = (SlipCellBase*)UNDEFDATA;
_fu31___ZSt4cout+137: mov    -0xc(%ebp),%eax
_fu31___ZSt4cout+140: movl   $0xdeadbeef,0x8(%eax)
_fu31___ZSt4cout+147: mov    -0xc(%ebp),%eax
_fu31___ZSt4cout+150: mov    0x8(%eax),%edx
_fu31___ZSt4cout+153: mov    -0xc(%ebp),%eax
_fu31___ZSt4cout+156: mov    %edx,0xc(%eax)
!       link->resetData();
_fu31___ZSt4cout+159: mov    -0xc(%ebp),%eax
_fu31___ZSt4cout+162: mov    %eax,(%esp)
_fu31___ZSt4cout+165: call   0x45ee34 <slip::SlipCellBase::resetData()>
!       return link;
_fu31___ZSt4cout+170: mov    -0xc(%ebp),%eax
!    }; // void * SlipCellBase::operator new(size_t size)
_fu31___ZSt4cout+173: mov    -0x4(%ebp),%ebx
_fu31___ZSt4cout+176: leave  
_fu31___ZSt4cout+177: ret    
_fu31___ZSt4cout+178: mov    %eax,%ebx

============================================================
Register values before the second call statement above
  _fu31___ZSt4cout+112: call   0x45eefc <slip::SlipCellBase::operator delete(void*)> 

eax	0x1
ecx	0x0
edx	0x6118c480
ebx	0x8006bdd0
esp	0x28ab20
ebp	0x28ab58
esi	0x28abb4
edi	0x28ab98
eip	0x43df20
eflags	0x282
cs	0x23
ss	0x2b
ds	0x2b
es	0x2b
fs	0x53
gs	0x2b
st0	0x0
st1	0x0
st2	0x0
st3	0x0
st4	0x0
st5	0x0
st6	0x2
st7	0x0
fctrl	0x37f
fstat	0x20
ftag	0xffff
fiseg	0x23
fioff	0x61160d94
foseg	0x2b
fooff	0x28a574
fop	0x0
xmm0	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm1	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm2	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm3	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm4	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm5	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm6	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm7	{v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
mxcsr	0x1f80
al	0x1
cl	0x0
dl	0x80
bl	0xd0
ah	0x0
ch	0x0
dh	0xc4
bh	0xbd
ax	0x1
cx	0x0
dx	0xc480
bx	0xbdd0
bp	0xab58
si	0xabb4
di	0xab98
mm0	{uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm1	{uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm2	{uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm3	{uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm4	{uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm5	{uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm6	{uint64 = 0x8000000000000000, v2_int32 = {0x0, 0x80000000}, v4_int16 = {0x0, 0x0, 0x0, 0x8000}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}}
mm7	{uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux