diff -Naur orig_simplesim-3.0/Makefile simplesim-3.0/Makefile --- orig_simplesim-3.0/Makefile 2003-10-08 21:42:59.000000000 -0500 +++ simplesim-3.0/Makefile 2008-03-21 19:42:44.000000000 -0500 @@ -78,7 +78,7 @@ ## Windows NT version 4.0, Cygnus CygWin/32 beta 19 ## CC = gcc -OFLAGS = -O0 -g -Wall +OFLAGS = -O2 -Wall -Werror MFLAGS = `./sysprobe -flags` MLIBS = `./sysprobe -libs` -lm ENDIAN = `./sysprobe -s` @@ -249,7 +249,7 @@ # -DSLOW_SHIFTS - emulate all shift operations, only used for testing as # sysprobe will auto-detect if host can use fast shifts # -FFLAGS = -DDEBUG +#FFLAGS = -DDEBUG # # Point the Makefile to your Simplescalar-based bunutils, these definitions diff -Naur orig_simplesim-3.0/dlite.c simplesim-3.0/dlite.c --- orig_simplesim-3.0/dlite.c 2003-10-08 11:25:42.000000000 -0500 +++ simplesim-3.0/dlite.c 2008-03-21 19:47:54.000000000 -0500 @@ -1408,6 +1408,11 @@ /* reset address */ addr = eval_as_addr(args[1].as_value); } + else + { + // Shouldn't ever get here, but it gets rid of some warnings + return "wrong number of args"; + } /* determine operand size */ if (modifiers & (MOD_BYTE|MOD_CHAR)) @@ -1946,6 +1951,11 @@ /* get access */ access = args[1].as_access; } + else + { + // Shouldn't get here, but this gets rid of warnings + return "wrong number of args"; + } /* build the range */ range.start.ptype = pt_addr; diff -Naur orig_simplesim-3.0/endian.c simplesim-3.0/endian.c --- orig_simplesim-3.0/endian.c 2003-10-08 10:54:07.000000000 -0500 +++ simplesim-3.0/endian.c 2008-03-21 20:35:24.000000000 -0500 @@ -73,14 +73,18 @@ enum endian_t endian_host_word_order(void) { - int *p; - double x = 1.0; + union union_int_float { + int i; + double d; + }; + + union union_int_float u; + u.d = 1.0; /* NOTE: this check assumes IEEE floating point format */ - p = (int *)&x; - if (*p == 0) + if (u.i == 0) return endian_little; - else if (*p == 0x3ff00000) + else if (u.i == 0x3ff00000) return endian_big; else return endian_unknown; diff -Naur orig_simplesim-3.0/libexo/libexo.c simplesim-3.0/libexo/libexo.c --- orig_simplesim-3.0/libexo/libexo.c 2003-10-08 21:30:16.000000000 -0500 +++ simplesim-3.0/libexo/libexo.c 2008-03-21 19:51:41.000000000 -0500 @@ -205,12 +205,12 @@ } /* map to a signed char value */ - value = (signed int)((unsigned char)((unsigned char)((unsigned int)value))); + int result = (signed int)((unsigned char)((unsigned char)((unsigned int)value))); - if (UCHAR_MAX < value) + if (UCHAR_MAX < result) fatal("character constant out of range"); - return value; + return result; } static void @@ -833,7 +833,8 @@ case ec_blob: { - int i, cr; + int i; + int cr = FALSE; fprintf(stream, "{%d}<\n", exo->as_blob.size); for (i=0; i < exo->as_blob.size; i++) diff -Naur orig_simplesim-3.0/machine.h simplesim-3.0/machine.h --- orig_simplesim-3.0/machine.h 2003-10-08 21:14:23.000000000 -0500 +++ simplesim-3.0/machine.h 2008-03-21 18:31:58.000000000 -0500 @@ -220,12 +220,6 @@ incr/decr operation specifiers */ #define MD_MAX_MASK 2048 -/* internal decoder state */ -extern enum md_opcode md_mask2op[]; -extern unsigned int md_opoffset[]; -extern unsigned int md_opmask[]; -extern unsigned int md_opshift[]; - /* global opcode names, these are returned by the decoder (MD_OP_ENUM()) */ enum md_opcode { OP_NA = 0, /* NA */ @@ -236,6 +230,12 @@ OP_MAX /* number of opcodes + NA */ }; +/* internal decoder state */ +extern enum md_opcode md_mask2op[]; +extern unsigned int md_opoffset[]; +extern unsigned int md_opmask[]; +extern unsigned int md_opshift[]; + /* enum md_opcode -> description string */ #define MD_OP_NAME(OP) (md_op2name[OP]) extern char *md_op2name[]; diff -Naur orig_simplesim-3.0/misc.c simplesim-3.0/misc.c --- orig_simplesim-3.0/misc.c 2003-10-08 20:14:42.000000000 -0500 +++ simplesim-3.0/misc.c 2008-03-21 19:50:23.000000000 -0500 @@ -86,7 +86,7 @@ /* declare a fatal run-time error, calls fatal hook function */ #ifdef __GNUC__ void -_fatal(char *file, char *func, int line, char *fmt, ...) +_fatal(const char *file, const char *func, int line, const char *fmt, ...) #else /* !__GNUC__ */ void fatal(char *fmt, ...) @@ -110,7 +110,7 @@ /* declare a panic situation, dumps core */ #ifdef __GNUC__ void -_panic(char *file, char *func, int line, char *fmt, ...) +_panic(const char *file, const char *func, int line, const char *fmt, ...) #else /* !__GNUC__ */ void panic(char *fmt, ...) @@ -133,7 +133,7 @@ /* declare a warning */ #ifdef __GNUC__ void -_warn(char *file, char *func, int line, char *fmt, ...) +_warn(const char *file, const char *func, int line, const char *fmt, ...) #else /* !__GNUC__ */ void warn(char *fmt, ...) @@ -175,7 +175,7 @@ /* print a debugging message */ #ifdef __GNUC__ void -_debug(char *file, char *func, int line, char *fmt, ...) +_debug(const char *file, const char *func, int line, const char *fmt, ...) #else /* !__GNUC__ */ void debug(char *fmt, ...) @@ -414,7 +414,7 @@ /* portable vsprintf with qword support, returns end pointer */ char * -myvsprintf(char *obuf, char *format, va_list v) +myvsprintf(char *obuf, const char *format, va_list v) { static char _blanks[] = " "; static char _zeroes[] = "00000000000000000000"; @@ -426,10 +426,11 @@ int fcode; /* field width and precision */ - int width, prec; + int width; + int prec = 0; /* number of padding zeroes required on the left and right */ - int lzero; + int lzero = 0; /* length of prefix */ int prefixlength; @@ -455,7 +456,7 @@ int k, lradix, mradix; /* pointer to sign, "0x", "0X", or empty */ - char *prefix; + char *prefix = NULL; /* values are developed in this buffer */ static char buf[MAXDIGS*4], buf1[MAXDIGS*4]; @@ -743,7 +744,7 @@ /* portable sprintf with qword support, returns end pointer */ char * -mysprintf(char *obuf, char *format, ...) +mysprintf(char *obuf, const char *format, ...) { /* vararg parameters */ va_list v; @@ -754,7 +755,7 @@ /* portable vfprintf with qword support, returns end pointer */ void -myvfprintf(FILE *stream, char *format, va_list v) +myvfprintf(FILE *stream, const char *format, va_list v) { /* temp buffer */ char buf[2048]; @@ -765,7 +766,7 @@ /* portable fprintf with qword support, returns end pointer */ void -myfprintf(FILE *stream, char *format, ...) +myfprintf(FILE *stream, const char *format, ...) { /* temp buffer */ char buf[2048]; diff -Naur orig_simplesim-3.0/misc.h simplesim-3.0/misc.h --- orig_simplesim-3.0/misc.h 2003-10-08 20:17:07.000000000 -0500 +++ simplesim-3.0/misc.h 2008-03-21 18:42:13.000000000 -0500 @@ -103,7 +103,7 @@ _fatal(__FILE__, __FUNCTION__, __LINE__, fmt, ## args) void -_fatal(char *file, char *func, int line, char *fmt, ...) +_fatal(const char *file, const char *func, int line, const char *fmt, ...) __attribute__ ((noreturn)); #else /* !__GNUC__ */ void @@ -116,7 +116,7 @@ _panic(__FILE__, __FUNCTION__, __LINE__, fmt, ## args) void -_panic(char *file, char *func, int line, char *fmt, ...) +_panic(const char *file, const char *func, int line, const char *fmt, ...) __attribute__ ((noreturn)); #else /* !__GNUC__ */ void @@ -129,7 +129,7 @@ _warn(__FILE__, __FUNCTION__, __LINE__, fmt, ## args) void -_warn(char *file, char *func, int line, char *fmt, ...); +_warn(const char *file, const char *func, int line, const char *fmt, ...); #else /* !__GNUC__ */ void warn(char *fmt, ...); @@ -158,7 +158,7 @@ } while(0) void -_debug(char *file, char *func, int line, char *fmt, ...); +_debug(const char *file, const char *func, int line, const char *fmt, ...); #else /* !__GNUC__ */ void debug(char *fmt, ...); @@ -223,16 +223,16 @@ /* portable 64-bit I/O package */ /* portable vsprintf with qword support, returns end pointer */ -char *myvsprintf(char *obuf, char *format, va_list v); +char *myvsprintf(char *obuf, const char *format, va_list v); /* portable sprintf with qword support, returns end pointer */ -char *mysprintf(char *obuf, char *format, ...); +char *mysprintf(char *obuf, const char *format, ...); /* portable vfprintf with qword support, returns end pointer */ -void myvfprintf(FILE *stream, char *format, va_list v); +void myvfprintf(FILE *stream, const char *format, va_list v); /* portable fprintf with qword support, returns end pointer */ -void myfprintf(FILE *stream, char *format, ...); +void myfprintf(FILE *stream, const char *format, ...); #ifdef HOST_HAS_QWORD diff -Naur orig_simplesim-3.0/sim-outorder.c simplesim-3.0/sim-outorder.c --- orig_simplesim-3.0/sim-outorder.c 2003-10-08 20:57:25.000000000 -0500 +++ simplesim-3.0/sim-outorder.c 2008-03-21 19:53:15.000000000 -0500 @@ -3705,14 +3705,14 @@ md_inst_t inst; /* actual instruction bits */ enum md_opcode op; /* decoded opcode enum */ int out1, out2, in1, in2, in3; /* output/input register names */ - md_addr_t target_PC; /* actual next/target PC address */ - md_addr_t addr; /* effective address, if load/store */ + md_addr_t target_PC = 0; /* actual next/target PC address */ + md_addr_t addr = 0; /* effective address, if load/store */ struct RUU_station *rs; /* RUU station being allocated */ struct RUU_station *lsq; /* LSQ station for ld/st's */ struct bpred_update_t *dir_update_ptr;/* branch predictor dir update ptr */ int stack_recover_idx; /* bpred retstack recovery index */ unsigned int pseq; /* pipetrace sequence number */ - int is_write; /* store? */ + int is_write = FALSE; /* store? */ int made_check; /* used to ensure DLite entry */ int br_taken, br_pred_taken; /* if br, taken? predicted taken? */ int fetch_redirected = FALSE; diff -Naur orig_simplesim-3.0/syscall.c simplesim-3.0/syscall.c --- orig_simplesim-3.0/syscall.c 2003-10-08 21:18:02.000000000 -0500 +++ simplesim-3.0/syscall.c 2008-03-21 19:11:06.000000000 -0500 @@ -95,9 +95,11 @@ #ifndef _MSC_VER #include #endif -#if defined(linux) +#if defined(linux) || defined(__APPLE__) #include #include +#endif +#if defined(linux) #include #endif #if defined(_AIX) @@ -112,7 +114,7 @@ #include #endif #endif -#ifdef linux +#if defined(linux) || defined(__APPLE__) #include #include #include @@ -174,7 +176,7 @@ #undef CR0 #endif -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__APPLE__) #include #else #ifndef _MSC_VER @@ -823,7 +825,7 @@ struct xlate_table_t socklevel_map[] = { -#if defined(__svr4__) || defined(__osf__) +#if defined(__svr4__) || defined(__osf__) || defined(__APPLE__) { OSF_SOL_SOCKET, SOL_SOCKET }, { OSF_SOL_IP, IPPROTO_IP }, { OSF_SOL_TCP, IPPROTO_TCP }, @@ -1171,7 +1173,7 @@ case OSF_SYS_old_recvfrom: case OSF_SYS_recvfrom: { - int addr_len; + socklen_t addr_len; char *buf; struct sockaddr *a_sock; @@ -2245,7 +2247,7 @@ mem_bcopy(mem_fn, mem, Write, /*rusage*/regs->regs_R[MD_REG_A1], &rusage, sizeof(struct osf_rusage)); } -#elif defined(__unix__) +#elif defined(__unix__) || defined(__APPLE__) { struct rusage local_rusage; struct osf_rusage rusage; @@ -2322,7 +2324,7 @@ #elif defined(_MSC_VER) /* no utimes() in MSC, use utime() instead */ /*result*/regs->regs_R[MD_REG_V0] = utime(buf, NULL); -#elif defined(__svr4__) || defined(__USLC__) || defined(unix) || defined(_AIX) || defined(__alpha) +#elif defined(__svr4__) || defined(__USLC__) || defined(unix) || defined(_AIX) || defined(__alpha) || defined(__APPLE__) /*result*/regs->regs_R[MD_REG_V0] = utimes(buf, NULL); #elif defined(__CYGWIN32__) warn("syscall: called utimes\n"); @@ -2369,7 +2371,7 @@ /* result */regs->regs_R[MD_REG_V0] = utime(buf, &ubuf); } -#elif defined(__USLC__) || defined(unix) || defined(_AIX) || defined(__alpha) +#elif defined(__USLC__) || defined(unix) || defined(_AIX) || defined(__alpha) || defined(__APPLE__) /* result */regs->regs_R[MD_REG_V0] = utimes(buf, tval); #elif defined(__CYGWIN32__) warn("syscall: called utimes\n"); @@ -3089,7 +3091,7 @@ /* get socket name */ char *buf; word_t osf_addrlen; - int addrlen; + socklen_t addrlen; /* get simulator memory parameters to host memory */ mem_bcopy(mem_fn, mem, Read, @@ -3141,7 +3143,7 @@ /* get socket name */ char *buf; word_t osf_addrlen; - int addrlen; + socklen_t addrlen; /* get simulator memory parameters to host memory */ mem_bcopy(mem_fn, mem, Read, diff -Naur orig_simplesim-3.0/target-alpha/alpha.h simplesim-3.0/target-alpha/alpha.h --- orig_simplesim-3.0/target-alpha/alpha.h 2003-10-08 21:14:23.000000000 -0500 +++ simplesim-3.0/target-alpha/alpha.h 2008-03-21 18:31:58.000000000 -0500 @@ -220,12 +220,6 @@ incr/decr operation specifiers */ #define MD_MAX_MASK 2048 -/* internal decoder state */ -extern enum md_opcode md_mask2op[]; -extern unsigned int md_opoffset[]; -extern unsigned int md_opmask[]; -extern unsigned int md_opshift[]; - /* global opcode names, these are returned by the decoder (MD_OP_ENUM()) */ enum md_opcode { OP_NA = 0, /* NA */ @@ -236,6 +230,12 @@ OP_MAX /* number of opcodes + NA */ }; +/* internal decoder state */ +extern enum md_opcode md_mask2op[]; +extern unsigned int md_opoffset[]; +extern unsigned int md_opmask[]; +extern unsigned int md_opshift[]; + /* enum md_opcode -> description string */ #define MD_OP_NAME(OP) (md_op2name[OP]) extern char *md_op2name[]; diff -Naur orig_simplesim-3.0/target-alpha/syscall.c simplesim-3.0/target-alpha/syscall.c --- orig_simplesim-3.0/target-alpha/syscall.c 2003-10-08 21:18:02.000000000 -0500 +++ simplesim-3.0/target-alpha/syscall.c 2008-03-21 19:11:06.000000000 -0500 @@ -95,9 +95,11 @@ #ifndef _MSC_VER #include #endif -#if defined(linux) +#if defined(linux) || defined(__APPLE__) #include #include +#endif +#if defined(linux) #include #endif #if defined(_AIX) @@ -112,7 +114,7 @@ #include #endif #endif -#ifdef linux +#if defined(linux) || defined(__APPLE__) #include #include #include @@ -174,7 +176,7 @@ #undef CR0 #endif -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__APPLE__) #include #else #ifndef _MSC_VER @@ -823,7 +825,7 @@ struct xlate_table_t socklevel_map[] = { -#if defined(__svr4__) || defined(__osf__) +#if defined(__svr4__) || defined(__osf__) || defined(__APPLE__) { OSF_SOL_SOCKET, SOL_SOCKET }, { OSF_SOL_IP, IPPROTO_IP }, { OSF_SOL_TCP, IPPROTO_TCP }, @@ -1171,7 +1173,7 @@ case OSF_SYS_old_recvfrom: case OSF_SYS_recvfrom: { - int addr_len; + socklen_t addr_len; char *buf; struct sockaddr *a_sock; @@ -2245,7 +2247,7 @@ mem_bcopy(mem_fn, mem, Write, /*rusage*/regs->regs_R[MD_REG_A1], &rusage, sizeof(struct osf_rusage)); } -#elif defined(__unix__) +#elif defined(__unix__) || defined(__APPLE__) { struct rusage local_rusage; struct osf_rusage rusage; @@ -2322,7 +2324,7 @@ #elif defined(_MSC_VER) /* no utimes() in MSC, use utime() instead */ /*result*/regs->regs_R[MD_REG_V0] = utime(buf, NULL); -#elif defined(__svr4__) || defined(__USLC__) || defined(unix) || defined(_AIX) || defined(__alpha) +#elif defined(__svr4__) || defined(__USLC__) || defined(unix) || defined(_AIX) || defined(__alpha) || defined(__APPLE__) /*result*/regs->regs_R[MD_REG_V0] = utimes(buf, NULL); #elif defined(__CYGWIN32__) warn("syscall: called utimes\n"); @@ -2369,7 +2371,7 @@ /* result */regs->regs_R[MD_REG_V0] = utime(buf, &ubuf); } -#elif defined(__USLC__) || defined(unix) || defined(_AIX) || defined(__alpha) +#elif defined(__USLC__) || defined(unix) || defined(_AIX) || defined(__alpha) || defined(__APPLE__) /* result */regs->regs_R[MD_REG_V0] = utimes(buf, tval); #elif defined(__CYGWIN32__) warn("syscall: called utimes\n"); @@ -3089,7 +3091,7 @@ /* get socket name */ char *buf; word_t osf_addrlen; - int addrlen; + socklen_t addrlen; /* get simulator memory parameters to host memory */ mem_bcopy(mem_fn, mem, Read, @@ -3141,7 +3143,7 @@ /* get socket name */ char *buf; word_t osf_addrlen; - int addrlen; + socklen_t addrlen; /* get simulator memory parameters to host memory */ mem_bcopy(mem_fn, mem, Read,