예제 #1
0
파일: loader.c 프로젝트: k4v/CA614-Project
/* register simulator-specific statistics */
void
ld_reg_stats(struct stat_sdb_t *sdb)	/* stats data base */
{
  stat_reg_addr(sdb, "ld_text_base",
		"program text (code) segment base",
		&ld_text_base, ld_text_base, "0x%08p");
  stat_reg_addr(sdb, "ld_text_bound",
		"program text (code) segment bound",
		&ld_text_bound, ld_text_bound, "0x%08p");
  stat_reg_uint(sdb, "ld_text_size",
		"program text (code) size in bytes",
		&ld_text_size, ld_text_size, NULL);
  stat_reg_addr(sdb, "ld_data_base",
		"program initialized data segment base",
		&ld_data_base, ld_data_base, "0x%08p");
  stat_reg_addr(sdb, "ld_data_bound",
		"program initialized data segment bound",
		&ld_data_bound, ld_data_bound, "0x%08p");
  stat_reg_uint(sdb, "ld_data_size",
		"program init'ed `.data' and uninit'ed `.bss' size in bytes",
		&ld_data_size, ld_data_size, NULL);
  stat_reg_addr(sdb, "ld_stack_base",
		"program stack segment base (highest address in stack)",
		&ld_stack_base, ld_stack_base, "0x%08p");
#if 0 /* FIXME: broken... */
  stat_reg_addr(sdb, "ld_stack_min",
		"program stack segment lowest address",
		&ld_stack_min, ld_stack_min, "0x%08p");
#endif
  stat_reg_uint(sdb, "ld_stack_size",
		"program initial stack size",
		&ld_stack_size, ld_stack_size, NULL);
  stat_reg_addr(sdb, "ld_prog_entry",
		"program entry point (initial PC)",
		&ld_prog_entry, ld_prog_entry, "0x%08p");
  stat_reg_addr(sdb, "ld_environ_base",
		"program environment base address address",
		&ld_environ_base, ld_environ_base, "0x%08p");
  stat_reg_int(sdb, "ld_target_big_endian",
	       "target executable endian-ness, non-zero if big endian",
	       &ld_target_big_endian, ld_target_big_endian, NULL);
}
예제 #2
0
파일: loader.c 프로젝트: hoangt/sim-mp
/* register simulator-specific statistics */
void
ld_reg_stats(struct stat_sdb_t *sdb, int threadid)	/* stats data base */
{
  context *current;
  current = thecontexts[threadid];

  stat_reg_uint(sdb, "threadid",
		"Thread id",
		&current->id, current->id, "0x%010p");
  stat_reg_addr(sdb, "ld_text_base",
		"program text (code) segment base",
		&current->ld_text_base, current->ld_text_base, "0x%010p");
  stat_reg_uint(sdb, "ld_text_size",
		"program text (code) size in bytes",
		&current->ld_text_size, current->ld_text_size, NULL);
  stat_reg_addr(sdb, "ld_data_base",
		"program initialized data segment base",
		&current->ld_data_base, current->ld_data_base, "0x%010p");
  stat_reg_uint(sdb, "ld_data_size",
		"program init'ed `.data' and uninit'ed `.bss' size in bytes",
		&current->ld_data_size, current->ld_data_size, NULL);
  stat_reg_addr(sdb, "ld_stack_base",
		"program stack segment base (highest address in stack)",
		&current->ld_stack_base, current->ld_stack_base, "0x%010p");
#if 0 /* FIXME: broken... */
  stat_reg_addr(sdb, "ld_stack_min",
		"program stack segment lowest address",
		&current->ld_stack_min, current->ld_stack_min, "0x%010p");
#endif
  stat_reg_uint(sdb, "ld_stack_size",
		"program initial stack size",
		&current->ld_stack_size, current->ld_stack_size, NULL);
  stat_reg_addr(sdb, "ld_prog_entry",
		"program entry point (initial PC)",
		&current->ld_prog_entry, current->ld_prog_entry, "0x%010p");
  stat_reg_addr(sdb, "ld_environ_base",
		"program environment base address address",
		&current->ld_environ_base, current->ld_environ_base, "0x%010p");
  stat_reg_int(sdb, "ld_target_big_endian",
	       "target executable endian-ness, non-zero if big endian",
	       &current->ld_target_big_endian, current->ld_target_big_endian, NULL);
}