This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] make microblaze build with -Wwrite-strings


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e742e119e1a37c642240195d6b942d624120df82

commit e742e119e1a37c642240195d6b942d624120df82
Author: Trevor Saunders <tbsaunde+binutils@tbsaunde.org>
Date:   Sat Mar 19 21:48:07 2016 -0400

    make microblaze build with -Wwrite-strings
    
    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 ().

Diff:
---
 gas/ChangeLog              | 5 +++++
 gas/config/tc-microblaze.c | 8 ++++----
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 29ec3ec..f1f588e 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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.
 
diff --git a/gas/config/tc-microblaze.c b/gas/config/tc-microblaze.c
index 70ceb21..0895ae9 100644
--- a/gas/config/tc-microblaze.c
+++ b/gas/config/tc-microblaze.c
@@ -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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]