Index: qemu/block-vmdk.c
===================================================================
--- qemu.orig/block-vmdk.c	2008-09-06 20:30:06.000000000 +0000
+++ qemu/block-vmdk.c	2008-09-07 07:28:55.000000000 +0000
@@ -119,7 +119,7 @@
     BDRVVmdkState *s = bs->opaque;
     char desc[DESC_SIZE];
     uint32_t cid;
-    char *p_name, *cid_str;
+    const char *p_name, *cid_str;
     size_t cid_str_size;
 
     /* the descriptor offset = 0x200 */
@@ -193,7 +193,7 @@
     uint32_t gde_entries, gd_size;
     int64_t gd_offset, rgd_offset, capacity, gt_size;
     char p_desc[DESC_SIZE], s_desc[DESC_SIZE], hdr[HEADER_SIZE];
-    char *desc_template =
+    static const char desc_template[] =
     "# Disk DescriptorFile\n"
     "version=1\n"
     "CID=%x\n"
@@ -202,7 +202,7 @@
     "parentFileNameHint=\"%s\"\n"
     "\n"
     "# Extent description\n"
-    "RW %lu SPARSE \"%s\"\n"
+    "RW %u SPARSE \"%s\"\n"
     "\n"
     "# The Disk Data Base \n"
     "#DDB\n"
@@ -702,7 +702,7 @@
     int fd, i;
     VMDK4Header header;
     uint32_t tmp, magic, grains, gd_size, gt_size, gt_count;
-    char *desc_template =
+    static const char desc_template[] =
         "# Disk DescriptorFile\n"
         "version=1\n"
         "CID=%x\n"
@@ -791,8 +791,9 @@
         real_filename = temp_str + 1;
     if ((temp_str = strrchr(real_filename, ':')) != NULL)
         real_filename = temp_str + 1;
-    snprintf(desc, sizeof(desc), desc_template, time(NULL), (unsigned long)total_size,
-             real_filename, (flags & BLOCK_FLAG_COMPAT6 ? 6 : 4), total_size / (63 * 16));
+    snprintf(desc, sizeof(desc), desc_template, (unsigned int)time(NULL),
+             (unsigned long)total_size, real_filename,
+             (flags & BLOCK_FLAG_COMPAT6 ? 6 : 4), total_size / (63 * 16));
 
     /* write the descriptor */
     lseek(fd, le64_to_cpu(header.desc_offset) << 9, SEEK_SET);
Index: qemu/block.c
===================================================================
--- qemu.orig/block.c	2008-09-06 20:31:25.000000000 +0000
+++ qemu/block.c	2008-09-06 20:31:30.000000000 +0000
@@ -190,7 +190,7 @@
 void get_tmp_filename(char *filename, int size)
 {
     int fd;
-    char *tmpdir;
+    const char *tmpdir;
     /* XXX: race condition possible */
     tmpdir = getenv("TMPDIR");
     if (!tmpdir)
Index: qemu/hw/usb-net.c
===================================================================
--- qemu.orig/hw/usb-net.c	2008-09-06 20:32:09.000000000 +0000
+++ qemu/hw/usb-net.c	2008-09-06 20:32:27.000000000 +0000
@@ -1016,7 +1016,7 @@
 {
 }
 
-static char *usb_net_stringtable[] = {
+static const char * const usb_net_stringtable[] = {
     [STRING_MANUFACTURER]	= "QEMU",
     [STRING_PRODUCT]		= "RNDIS/QEMU USB Network Device",
     [STRING_ETHADDR]		= "400102030405",
Index: qemu/hw/usb-ohci.c
===================================================================
--- qemu.orig/hw/usb-ohci.c	2008-09-06 20:41:32.000000000 +0000
+++ qemu/hw/usb-ohci.c	2008-09-06 20:42:14.000000000 +0000
@@ -565,7 +565,7 @@
 {
     int dir;
     size_t len = 0;
-    char *str = NULL;
+    const char *str = NULL;
     int pid;
     int ret;
     int i;
@@ -800,7 +800,7 @@
 {
     int dir;
     size_t len = 0;
-    char *str = NULL;
+    const char *str = NULL;
     int pid;
     int ret;
     int i;
Index: qemu/slirp/ip_icmp.c
===================================================================
--- qemu.orig/slirp/ip_icmp.c	2008-09-06 20:33:50.000000000 +0000
+++ qemu/slirp/ip_icmp.c	2008-09-06 20:34:59.000000000 +0000
@@ -207,12 +207,8 @@
 
 #define ICMP_MAXDATALEN (IP_MSS-28)
 void
-icmp_error(msrc, type, code, minsize, message)
-     struct mbuf *msrc;
-     u_char type;
-     u_char code;
-     int minsize;
-     char *message;
+icmp_error(struct mbuf *msrc, u_char type, u_char code, int minsize,
+           const char *message)
 {
   unsigned hlen, shlen, s_ip_len;
   register struct ip *ip;
Index: qemu/slirp/ip_icmp.h
===================================================================
--- qemu.orig/slirp/ip_icmp.h	2008-09-06 20:33:48.000000000 +0000
+++ qemu/slirp/ip_icmp.h	2008-09-07 06:44:22.000000000 +0000
@@ -158,7 +158,8 @@
 	(type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY)
 
 void icmp_input _P((struct mbuf *, int));
-void icmp_error _P((struct mbuf *, u_char, u_char, int, char *));
+void icmp_error(struct mbuf *msrc, u_char type, u_char code, int minsize,
+                const char *message);
 void icmp_reflect _P((struct mbuf *));
 
 #endif
Index: qemu/slirp/misc.c
===================================================================
--- qemu.orig/slirp/misc.c	2008-09-06 20:35:28.000000000 +0000
+++ qemu/slirp/misc.c	2008-09-06 21:00:31.000000000 +0000
@@ -307,7 +307,7 @@
 	socklen_t addrlen = sizeof(addr);
 	int opt;
         int master = -1;
-	char *argv[256];
+	const char *argv[256];
 #if 0
 	char buff[256];
 #endif
@@ -411,7 +411,7 @@
 		   } while (c);
 
 		argv[i] = 0;
-		execvp(argv[0], argv);
+		execvp(argv[0], (char **)argv);
 
 		/* Ooops, failed, let's tell the user why */
 		  {
Index: qemu/vl.c
===================================================================
--- qemu.orig/vl.c	2008-09-06 20:36:12.000000000 +0000
+++ qemu/vl.c	2008-09-07 07:30:05.000000000 +0000
@@ -1898,7 +1898,7 @@
     return ret;
 }
 
-static char *mux_help[] = {
+static const char * const mux_help[] = {
     "% h    print this help\n\r",
     "% x    exit emulator\n\r",
     "% s    save disk data back to file (if -snapshot)\n\r",
@@ -1948,7 +1948,7 @@
             break;
         case 'x':
             {
-                 char *term =  "QEMU: Terminated\n\r";
+                 const char *term =  "QEMU: Terminated\n\r";
                  chr->chr_write(chr,(uint8_t *)term,strlen(term));
                  exit(0);
                  break;
@@ -3957,6 +3957,7 @@
     char *str = strdup(input_str);
     char *host_str = str;
     char *src_str;
+    const char *src_str2;
     char *ptr;
 
     /*
@@ -3975,10 +3976,11 @@
     if (parse_host_port(haddr, host_str) < 0)
         goto fail;
 
+    src_str2 = src_str;
     if (!src_str || *src_str == '\0')
-        src_str = ":0";
+        src_str2 = ":0";
 
-    if (parse_host_port(saddr, src_str) < 0)
+    if (parse_host_port(saddr, src_str2) < 0)
         goto fail;
 
     free(str);
@@ -5164,7 +5166,7 @@
 }
 
 static int check_params(char *buf, int buf_size,
-                        char **params, const char *str)
+                        const char * const *params, const char *str)
 {
     const char *p;
     int i;
@@ -5451,9 +5453,10 @@
     int cache;
     int bdrv_flags;
     char *str = arg->opt;
-    char *params[] = { "bus", "unit", "if", "index", "cyls", "heads",
-                       "secs", "trans", "media", "snapshot", "file",
-                       "cache", "format", NULL };
+    static const char * const params[] = { "bus", "unit", "if", "index",
+                                           "cyls", "heads", "secs", "trans",
+                                           "media", "snapshot", "file",
+                                           "cache", "format", NULL };
 
     if (check_params(buf, sizeof(buf), params, str) < 0) {
          fprintf(stderr, "qemu: unknown parameter '%s' in '%s'\n",
Index: qemu/exec.c
===================================================================
--- qemu.orig/exec.c	2008-09-06 20:44:48.000000000 +0000
+++ qemu/exec.c	2008-09-06 20:44:59.000000000 +0000
@@ -180,7 +180,7 @@
 #endif
 
 /* log support */
-char *logfilename = "/tmp/qemu.log";
+const char *logfilename = "/tmp/qemu.log";
 FILE *logfile;
 int loglevel;
 static int log_append = 0;
Index: qemu/gdbstub.c
===================================================================
--- qemu.orig/gdbstub.c	2008-09-06 20:44:15.000000000 +0000
+++ qemu/gdbstub.c	2008-09-07 06:30:49.000000000 +0000
@@ -205,7 +205,7 @@
 }
 
 /* return -1 if error, 0 if OK */
-static int put_packet(GDBState *s, char *buf)
+static int put_packet(GDBState *s, const char *buf)
 {
     int len, csum, i;
     uint8_t *p;
@@ -1259,7 +1259,7 @@
     %x  - target_ulong argument printed in hex.
     %lx - 64-bit argument printed in hex.
     %s  - string pointer (target_ulong) and length (int) pair.  */
-void gdb_do_syscall(gdb_syscall_complete_cb cb, char *fmt, ...)
+void gdb_do_syscall(gdb_syscall_complete_cb cb, const char *fmt, ...)
 {
     va_list va;
     char buf[256];
Index: qemu/hw/e1000.c
===================================================================
--- qemu.orig/hw/e1000.c	2008-09-06 20:42:41.000000000 +0000
+++ qemu/hw/e1000.c	2008-09-07 07:08:54.000000000 +0000
@@ -949,7 +949,7 @@
     E1000State *d;
     uint8_t *pci_conf;
     uint16_t checksum = 0;
-    char *info_str = "e1000";
+    static const char * const info_str = "e1000";
     int i;
 
     d = (E1000State *)pci_register_device(bus, "e1000",
Index: qemu/linux-user/strace.c
===================================================================
--- qemu.orig/linux-user/strace.c	2008-09-06 20:46:06.000000000 +0000
+++ qemu/linux-user/strace.c	2008-09-06 20:46:53.000000000 +0000
@@ -13,8 +13,8 @@
 
 struct syscallname {
     int nr;
-    char *name;
-    char *format;
+    const char *name;
+    const char *format;
     void (*call)(struct syscallname *,
                  abi_long, abi_long, abi_long,
                  abi_long, abi_long, abi_long);
@@ -271,7 +271,7 @@
               abi_long arg4, abi_long arg5, abi_long arg6)
 {
     int i;
-    char *format="%s(" TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld ")";
+    const char *format="%s(" TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld ")";
 
     gemu_log("%d ", getpid() );
 
Index: qemu/gdbstub.h
===================================================================
--- qemu.orig/gdbstub.h	2008-09-07 06:31:15.000000000 +0000
+++ qemu/gdbstub.h	2008-09-07 06:31:23.000000000 +0000
@@ -6,7 +6,7 @@
 typedef void (*gdb_syscall_complete_cb)(CPUState *env,
                                         target_ulong ret, target_ulong err);
 
-void gdb_do_syscall(gdb_syscall_complete_cb cb, char *fmt, ...);
+void gdb_do_syscall(gdb_syscall_complete_cb cb, const char *fmt, ...);
 int use_gdb_syscalls(void);
 #ifdef CONFIG_USER_ONLY
 int gdb_handlesig (CPUState *, int);
Index: qemu/m68k-dis.c
===================================================================
--- qemu.orig/m68k-dis.c	2008-09-07 06:35:53.000000000 +0000
+++ qemu/m68k-dis.c	2008-09-07 06:38:51.000000000 +0000
@@ -546,13 +546,13 @@
 
 /* Local function prototypes.  */
 
-const char * const fpcr_names[] =
+static const char * const fpcr_names[] =
 {
   "", "%fpiar", "%fpsr", "%fpiar/%fpsr", "%fpcr",
   "%fpiar/%fpcr", "%fpsr/%fpcr", "%fpiar/%fpsr/%fpcr"
 };
 
-static char *const reg_names[] =
+static const char *const reg_names[] =
 {
   "%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7",
   "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%fp", "%sp",
@@ -561,7 +561,7 @@
 
 /* Name of register halves for MAC/EMAC.
    Separate from reg_names since 'spu', 'fpl' look weird.  */
-static char *const reg_half_names[] =
+static const char *const reg_half_names[] =
 {
   "%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7",
   "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%a6", "%a7",
@@ -991,7 +991,7 @@
 	       disassemble_info *info)
 {
   int word;
-  static char *const scales[] = { "", ":2", ":4", ":8" };
+  static const char *const scales[] = { "", ":2", ":4", ":8" };
   bfd_vma base_disp;
   bfd_vma outer_disp;
   char buf[40];
@@ -1106,7 +1106,7 @@
     {
     case 'c':		/* Cache identifier.  */
       {
-        static char *const cacheFieldName[] = { "nc", "dc", "ic", "bc" };
+        static const char *const cacheFieldName[] = { "nc", "dc", "ic", "bc" };
         val = fetch_arg (buffer, place, 2, info);
         (*info->fprintf_func) (info->stream, cacheFieldName[val]);
         break;
@@ -1157,7 +1157,7 @@
 	/* FIXME: There's a problem here, different m68k processors call the
 	   same address different names. This table can't get it right
 	   because it doesn't know which processor it's disassembling for.  */
-	static const struct { char *name; int value; } names[]
+	static const struct { const char *name; int value; } names[]
 	  = {{"%sfc", 0x000}, {"%dfc", 0x001}, {"%cacr", 0x002},
 	     {"%tc",  0x003}, {"%itt0",0x004}, {"%itt1", 0x005},
              {"%dtt0",0x006}, {"%dtt1",0x007}, {"%buscr",0x008},
@@ -1201,7 +1201,7 @@
     case 'M':
       if (place == 'h')
 	{
-	  static char *const scalefactor_name[] = { "<<", ">>" };
+	  static const char *const scalefactor_name[] = { "<<", ">>" };
 	  val = fetch_arg (buffer, place, 1, info);
 	  (*info->fprintf_func) (info->stream, scalefactor_name[val]);
 	}
@@ -1633,7 +1633,7 @@
     case '3':
       {
 	int val = fetch_arg (buffer, place, 5, info);
-	char *name = 0;
+        const char *name = 0;
 
 	switch (val)
 	  {
Index: qemu/target-cris/translate.c
===================================================================
--- qemu.orig/target-cris/translate.c	2008-09-07 06:35:04.000000000 +0000
+++ qemu/target-cris/translate.c	2008-09-07 06:35:17.000000000 +0000
@@ -123,7 +123,7 @@
 	int singlestep_enabled;
 } DisasContext;
 
-static void gen_BUG(DisasContext *dc, char *file, int line)
+static void gen_BUG(DisasContext *dc, const char *file, int line)
 {
 	printf ("BUG: pc=%x %s %d\n", dc->pc, file, line);
 	fprintf (logfile, "BUG: pc=%x %s %d\n", dc->pc, file, line);
Index: qemu/hw/sh.h
===================================================================
--- qemu.orig/hw/sh.h	2008-09-07 06:50:17.000000000 +0000
+++ qemu/hw/sh.h	2008-09-07 06:50:43.000000000 +0000
@@ -43,6 +43,6 @@
 		     struct intc_source *bri_source);
 
 /* tc58128.c */
-int tc58128_init(struct SH7750State *s, char *zone1, char *zone2);
+int tc58128_init(struct SH7750State *s, const char *zone1, const char *zone2);
 
 #endif
Index: qemu/hw/tc58128.c
===================================================================
--- qemu.orig/hw/tc58128.c	2008-09-07 06:48:54.000000000 +0000
+++ qemu/hw/tc58128.c	2008-09-07 06:50:59.000000000 +0000
@@ -26,7 +26,7 @@
 
 #define FLASH_SIZE (16*1024*1024)
 
-void init_dev(tc58128_dev * dev, char *filename)
+static void init_dev(tc58128_dev * dev, const char *filename)
 {
     int ret, blocks;
 
@@ -175,7 +175,7 @@
     tc58128_cb			/* Callback */
 };
 
-int tc58128_init(struct SH7750State *s, char *zone1, char *zone2)
+int tc58128_init(struct SH7750State *s, const char *zone1, const char *zone2)
 {
     init_dev(&tc58128_devs[0], zone1);
     init_dev(&tc58128_devs[1], zone2);
Index: qemu/linux-user/arm/nwfpe/fpopcode.h
===================================================================
--- qemu.orig/linux-user/arm/nwfpe/fpopcode.h	2008-09-07 06:57:26.000000000 +0000
+++ qemu/linux-user/arm/nwfpe/fpopcode.h	2008-09-07 06:57:50.000000000 +0000
@@ -366,19 +366,19 @@
 /* Get the rounding mode from the opcode. */
 #define getRoundingMode(opcode)		((opcode & MASK_ROUNDING_MODE) >> 5)
 
-static inline const floatx80 getExtendedConstant(const unsigned int nIndex)
+static inline floatx80 getExtendedConstant(const unsigned int nIndex)
 {
    extern const floatx80 floatx80Constant[];
    return floatx80Constant[nIndex];
 }
 
-static inline const float64 getDoubleConstant(const unsigned int nIndex)
+static inline float64 getDoubleConstant(const unsigned int nIndex)
 {
    extern const float64 float64Constant[];
    return float64Constant[nIndex];
 }
 
-static inline const float32 getSingleConstant(const unsigned int nIndex)
+static inline float32 getSingleConstant(const unsigned int nIndex)
 {
    extern const float32 float32Constant[];
    return float32Constant[nIndex];
Index: qemu/sh4-dis.c
===================================================================
--- qemu.orig/sh4-dis.c	2008-09-07 06:51:44.000000000 +0000
+++ qemu/sh4-dis.c	2008-09-07 06:54:04.000000000 +0000
@@ -325,7 +325,7 @@
 
 typedef struct
 {
-  char *name;
+  const char *name;
   sh_arg_type arg[4];
   sh_nibble_type nibbles[9];
   unsigned int arch;
@@ -1386,13 +1386,13 @@
      int field_b;
      struct disassemble_info *info;
 {
-  static char *sx_tab[] = { "x0", "x1", "a0", "a1" };
-  static char *sy_tab[] = { "y0", "y1", "m0", "m1" };
+  static const char *sx_tab[] = { "x0", "x1", "a0", "a1" };
+  static const char *sy_tab[] = { "y0", "y1", "m0", "m1" };
   fprintf_ftype fprintf_fn = info->fprintf_func;
   void *stream = info->stream;
   unsigned int nib1, nib2, nib3;
   unsigned int altnib1, nib4;
-  char *dc = NULL;
+  const char *dc = NULL;
   const sh_opcode_info *op;
 
   if ((field_b & 0xe800) == 0)
@@ -1405,10 +1405,10 @@
     }
   if ((field_b & 0xc000) == 0x4000 && (field_b & 0x3000) != 0x1000)
     {
-      static char *du_tab[] = { "x0", "y0", "a0", "a1" };
-      static char *se_tab[] = { "x0", "x1", "y0", "a1" };
-      static char *sf_tab[] = { "y0", "y1", "x0", "a1" };
-      static char *sg_tab[] = { "m0", "m1", "a0", "a1" };
+      static const char *du_tab[] = { "x0", "y0", "a0", "a1" };
+      static const char *se_tab[] = { "x0", "x1", "y0", "a1" };
+      static const char *sf_tab[] = { "y0", "y1", "x0", "a1" };
+      static const char *sg_tab[] = { "m0", "m1", "a0", "a1" };
 
       if (field_b & 0x2000)
 	{
Index: qemu/target-alpha/helper.c
===================================================================
--- qemu.orig/target-alpha/helper.c	2008-09-07 06:55:00.000000000 +0000
+++ qemu/target-alpha/helper.c	2008-09-07 06:56:31.000000000 +0000
@@ -411,7 +411,7 @@
                      int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
                      int flags)
 {
-    static unsigned char *linux_reg_names[] = {
+    static const unsigned char *linux_reg_names[] = {
         "v0 ", "t0 ", "t1 ", "t2 ", "t3 ", "t4 ", "t5 ", "t6 ",
         "t7 ", "s0 ", "s1 ", "s2 ", "s3 ", "s4 ", "s5 ", "fp ",
         "a0 ", "a1 ", "a2 ", "a3 ", "a4 ", "a5 ", "t8 ", "t9 ",
