From: Nick Clifton Date: Thu, 2 Nov 2000 19:32:47 +0000 (+0000) Subject: Preserve copy of case clobber opcodes so that .req pseudo op works X-Git-Tag: newlib-1_9_0~660 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=37d8bb275baa259bc12f873cc4bf2a4f8ef81af5;p=external%2Fbinutils.git Preserve copy of case clobber opcodes so that .req pseudo op works --- diff --git a/gas/ChangeLog b/gas/ChangeLog index a841ee4..b42b97d 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,11 +1,20 @@ +2000-11-01 Nick Clifton + + * 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 * 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 * config/tc-arm.c (do_msr): Improve error message. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 6f27c64..41e40d4 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -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); diff --git a/gas/read.c b/gas/read.c index 371a930..d776c0f 100644 --- a/gas/read.c +++ b/gas/read.c @@ -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)) diff --git a/gas/read.h b/gas/read.h index 8c248f2..66fb08a 100644 --- a/gas/read.h +++ b/gas/read.h @@ -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));