* callback.c (default_callback): Initialize target_endian.

(cb_store_target_endian): Renamed from store, new first parameter
	host_callback *cb, drop last parameter big_p.  Take endianness
	from cb.
	(cb_host_to_target_stat): Change to use cb_store_target_endian.
	Remove variable big_p.
	* nrun.c (main): Initialize default_callback.target_endian.
This commit is contained in:
Hans-Peter Nilsson 2005-01-28 03:28:40 +00:00
parent 99b2a78e34
commit f4f8cce440
3 changed files with 27 additions and 8 deletions

View File

@ -1,3 +1,13 @@
2005-01-28 Hans-Peter Nilsson <hp@axis.com>
* callback.c (default_callback): Initialize target_endian.
(cb_store_target_endian): Renamed from store, new first parameter
host_callback *cb, drop last parameter big_p. Take endianness
from cb.
(cb_host_to_target_stat): Change to use cb_store_target_endian.
Remove variable big_p.
* nrun.c (main): Initialize default_callback.target_endian.
2005-01-14 Andrew Cagney <cagney@gnu.org>
* configure.ac: Replace SIM_AC_COMMON with sinclude of common.m4.

View File

@ -626,6 +626,9 @@ host_callback default_callback =
0, /* signal_map */
0, /* stat_map */
/* Defaults expected to be overridden at initialization, where needed. */
BFD_ENDIAN_UNKNOWN, /* target_endian */
HOST_CALLBACK_MAGIC,
};
@ -757,17 +760,17 @@ cb_target_to_host_open (cb, target_val)
return host_val;
}
/* Utility for cb_host_to_target_stat to store values in the target's
/* Utility for e.g. cb_host_to_target_stat to store values in the target's
stat struct. */
static void
store (p, size, val, big_p)
void
cb_store_target_endian (cb, p, size, val)
host_callback *cb;
char *p;
int size;
long val; /* ??? must be as big as target word size */
int big_p;
{
if (big_p)
if (cb->target_endian == BFD_ENDIAN_BIG)
{
p += size;
while (size-- > 0)
@ -801,7 +804,6 @@ cb_host_to_target_stat (cb, hs, ts)
{
const char *m = cb->stat_map;
char *p;
int big_p = 0;
if (hs == NULL)
ts = NULL;
@ -833,7 +835,7 @@ cb_host_to_target_stat (cb, hs, ts)
#undef ST_x
#define ST_x(FLD) \
else if (strncmp (m, #FLD, q - m) == 0) \
store (p, size, hs->FLD, big_p)
cb_store_target_endian (cb, p, size, hs->FLD)
#ifdef HAVE_STRUCT_STAT_ST_DEV
ST_x (st_dev);
@ -877,7 +879,8 @@ cb_host_to_target_stat (cb, hs, ts)
#undef ST_x
/* FIXME:wip */
else
store (p, size, 0, big_p); /* unsupported field, store 0 */
/* Unsupported field, store 0. */
cb_store_target_endian (cb, p, size, 0);
}
p += size;

View File

@ -82,6 +82,12 @@ main (int argc, char **argv)
abort ();
}
/* We can't set the endianness in the callback structure until
sim_config is called, which happens in sim_open. */
default_callback.target_endian
= (CURRENT_TARGET_BYTE_ORDER == BIG_ENDIAN
? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
/* Was there a program to run? */
prog_argv = STATE_PROG_ARGV (sd);
prog_bfd = STATE_PROG_BFD (sd);