make microblaze build with -Wwrite-strings
authorTrevor Saunders <tbsaunde+binutils@tbsaunde.org>
Sun, 20 Mar 2016 01:48:07 +0000 (21:48 -0400)
committerTrevor Saunders <tbsaunde+binutils@tbsaunde.org>
Thu, 24 Mar 2016 12:00:44 +0000 (08:00 -0400)
frag_var () assigns its last argument to frag::fr_opcode, and it turns out
some targets modify the string that points to.  However it appears niether the
generic code or the microblaze code modifies what fr_opcode points to, so this
code should be safe.  So we unfortunately need to cast to char * when passing
an argument to frag_var () but otherwise microblaze can itself point to these
strings with const char *.

gas/ChangeLog:

2016-03-24  Trevor Saunders  <tbsaunde+binutils@tbsaunde.org>

* config/tc-microblaze.c (md_assemble): Cast opc to char * when calling
frag_var ().

gas/ChangeLog
gas/config/tc-microblaze.c

index 29ec3ec..f1f588e 100644 (file)
@@ -1,5 +1,10 @@
 2016-03-24  Trevor Saunders  <tbsaunde+binutils@tbsaunde.org>
 
+       * config/tc-microblaze.c (md_assemble): Cast opc to char * when calling
+       frag_var ().
+
+2016-03-24  Trevor Saunders  <tbsaunde+binutils@tbsaunde.org>
+
        * config/tc-visium.c (md_atof): Localize the string returned on
        failure.
 
index 70ceb21..0895ae9 100644 (file)
@@ -840,8 +840,8 @@ parse_cons_expression_microblaze (expressionS *exp, int size)
    machine dependent instruction.  This function is supposed to emit
    the frags/bytes it assembles to.  */
 
-static char * str_microblaze_ro_anchor = "RO";
-static char * str_microblaze_rw_anchor = "RW";
+static const char * str_microblaze_ro_anchor = "RO";
+static const char * str_microblaze_rw_anchor = "RW";
 
 static bfd_boolean
 check_spl_reg (unsigned * reg)
@@ -1014,7 +1014,7 @@ md_assemble (char * str)
 
       if (exp.X_op != O_constant)
        {
-          char *opc;
+          const char *opc;
          relax_substateT subtype;
 
           if (streq (name, "lmi"))
@@ -1039,7 +1039,7 @@ md_assemble (char * str)
                             subtype,   /* PC-relative or not.  */
                             exp.X_add_symbol,
                             exp.X_add_number,
-                            opc);
+                            (char *) opc);
          immed = 0;
         }
       else