Ejemplo n.º 1
0
PUBLIC
bool
Jdb_tcb_ptr::in_backtrace(Address bt_start, Address tcb)
{
  if (bt_start)
    {
      if (!Config::Have_frame_ptr)
	return Mem_layout::in_kernel_code(value());

      Jdb_tcb_ptr ebp(bt_start);

      for (;;)
	{
	  Jdb_tcb_ptr eip(ebp.addr()+4);

	  if (!Mem_layout::in_kernel_code(eip.value()))
	    return false;
	  if (ebp.addr()+4 == addr())
	    return true;
	  if (ebp.addr() == 0 || !Jdb_tcb_ptr(ebp.value()).valid())
	    return false;

	  ebp = ebp.value();
	}
    }
  return false;
}
Ejemplo n.º 2
0
void *QueryInputAndChangeObjectName( int Type, void *Ptr1, void *Ptr2, void *Ptr3 )
{
  int eax;
  int ecx;
  int edx;
  char *name;
  char msg[513];
  if ( Type != 1024 )
  {
    switch ( Type )
    {
    case 2:
      break;
    case 4:
      gui->prompt_for( "Linename:", ((char*)Ptr2)[84] == 0 ? ((char*)Ptr2)[84] : "" );
      break;
    case 1:
      gui->prompt_for( "Vianame:", ((char*)Ptr2)[60] == 0 ? ((char*)Ptr2)[60] : "" );
      break;
    case 256:
      __sprintf_chk( msg, 1, 513, "%s Pin Name:", ((char*)Ptr2)[64] == 0 ? &((char*)Ptr2)[64] : "" );
      ebp( msg[0], ((char*)Ptr2)[88] == 0 ? ((char*)Ptr2)[88] : "", gui->prompt_for );
      break;
    case 512:
      __sprintf_chk( msg, 1, 513, "%s Pad Name:", ((char*)Ptr2)[92] == 0 ? &((char*)Ptr2)[92] : "" );
      ebp( msg[0], ((char*)Ptr2)[88] == 0 ? ((char*)Ptr2)[88] : "", gui->prompt_for );
      break;
    case 16:
      gui->prompt_for( "Enter text:", ((char*)Ptr2)[52] == 0 ? ((char*)Ptr2)[52] : "" );
      break;
    default:
      Ptr3 = 0;
      if ( 0 ^ 0 )
      {
        __stack_chk_fail( );
      }
      return Ptr3;
      break;
    }
    if ( name == 0 )
      continue;
    else
    {
      /* phantom */ char *old;
      if ( ChangeObjectName( Type, Ptr1, Ptr2, Ptr3, name ) != -1 )
      {
        AddObjectToChangeNameUndoList( Type, Ptr1, Ptr2, Ptr3, (char*)ChangeObjectName( Type, Ptr1, Ptr2, Ptr3, name ) );
        IncrementUndoSerialNumber( );
      }
      Draw( );
    }
  }
  else
  {
    Ptr3 = Ptr1;
    Ptr2 = Ptr1;
  }
  if ( ((char*)Ptr2)[88] == 0 )
    goto B22;
  else
  {
  }
B22:;
  ebx( "Elementname:", ((char*)Ptr2)[88], PCB->Flags.f & 64, Ptr1 );
  Type = 2;
}