Preserve copy of case clobber opcodes so that .req pseudo op works
authorNick Clifton <nickc@redhat.com>
Thu, 2 Nov 2000 19:32:47 +0000 (19:32 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 2 Nov 2000 19:32:47 +0000 (19:32 +0000)
gas/ChangeLog
gas/config/tc-arm.c
gas/read.c
gas/read.h

index a841ee4195411a1eda3d310dc0eb9573e6af13be..b42b97d851d747055d161aec07e5c84010952a72 100644 (file)
@@ -1,11 +1,20 @@
+2000-11-01  Nick Clifton  <nickc@redhat.com>
+
+       * read.c (original_case_string): New global variable.
+       (read_a_source_file): Copy opcode string into
+       original_case_string if clobbering the case of the opcode.
+       * read.h: Export the definition of original_case_string.
+       * config/tc-arm.c (md_assembler): When parsing a .req
+       directive use the original opcode string, not the case
+       clobbered version.
+
 2000-11-02  Nick Clifton  <nickc@redhat.com>
 
        * config/tc-mn10300.c (debug_line): Remove this static
-       varaible.
+       variable.
        (md_assemble): Call dwarf2_generate_asm_lineno instead of
        dwarf2_where and dwarf2_gen_line_info.
 
-
 2000-11-02  Theo Honohan  <th@futuretv.com>
 
        * config/tc-arm.c (do_msr): Improve error message. 
index 6f27c64843a2af6f7ba5b491e1bfc695b903d179..41e40d4a299ae951dce92f2df7923c501310d0c5 100644 (file)
@@ -6613,9 +6613,14 @@ _("Warning: Use of the 'nv' conditional is deprecated\n"));
   if (*q && !strncmp (q, ".req ", 4))
     {
       int    reg;
-      char * copy_of_str = str;
+      char * copy_of_str;
       char * r;
 
+#ifdef IGNORE_OPCODE_CASE
+      str = original_case_string;
+#endif
+      copy_of_str = str;
+      
       q += 4;
       skip_whitespace (q);
 
index 371a930943fc9837f152cda052f97c5040883dc4..d776c0f63b5c346e3e2f524bf9173afd7b9d2a80 100644 (file)
@@ -165,6 +165,10 @@ char is_end_of_line[256] =
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0       /* */
 };
 
+#ifdef  IGNORE_OPCODE_CASE
+char original_case_string[128];
+#endif
+
 /* Functions private to this file.  */
 
 static char *buffer;   /* 1st char of each buffer of lines is here.  */
@@ -735,10 +739,13 @@ read_a_source_file (name)
                  /* Expect pseudo-op or machine instruction.  */
                  pop = NULL;
 
-#define IGNORE_OPCODE_CASE
 #ifdef IGNORE_OPCODE_CASE
                  {
                    char *s2 = s;
+
+                   strncpy (original_case_string, s2, sizeof (original_case_string));
+                   original_case_string[sizeof (original_case_string) - 1] = 0;
+                   
                    while (*s2)
                      {
                        if (isupper ((unsigned char) *s2))
index 8c248f279cf08f23a210f17b889d23443e78be52..66fb08a38173474044c4436df3030f4a01c44210 100644 (file)
@@ -85,6 +85,11 @@ enum linkonce_type
   LINKONCE_SAME_CONTENTS
 };
 
+#define IGNORE_OPCODE_CASE
+#ifdef  IGNORE_OPCODE_CASE
+extern char original_case_string[];
+#endif
+
 extern void pop_insert PARAMS ((const pseudo_typeS *));
 extern unsigned int get_stab_string_offset
   PARAMS ((const char *string, const char *stabstr_secname));