diff options
author | Jie Zhang <jie.zhang@analog.com> | 2009-09-01 00:24:02 +0000 |
---|---|---|
committer | Jie Zhang <jie.zhang@analog.com> | 2009-09-01 00:24:02 +0000 |
commit | 5e8c8f8f89533ff627f6d73391c712604bf705ee (patch) | |
tree | 8908798100b0a236b7489ea4b2727e109c272fb7 /gas/config | |
parent | 194ca99d08a653841eeeb2676a19fa735c7cba89 (diff) | |
download | gdb-5e8c8f8f89533ff627f6d73391c712604bf705ee.zip gdb-5e8c8f8f89533ff627f6d73391c712604bf705ee.tar.gz gdb-5e8c8f8f89533ff627f6d73391c712604bf705ee.tar.bz2 |
* read.c (TC_START_LABEL): Add a new argument.
(read_a_source_file): Pass the beginning of the symbol through
the new argument of TC_START_LABEL.
* config/tc-arm.h (TC_START_LABEL): Add a new argument.
* config/tc-bfin.c (bfin_start_label): Only search '(' and '['
from the beginning of the symbol.
* config/tc-bfin.h (TC_START_LABEL): Add the new argument.
* config/tc-d30v.h (TC_START_LABEL): Likewise.
* config/tc-fr30.h (TC_START_LABEL): Likewise.
* config/tc-m32c.h (TC_START_LABEL): Likewise.
* config/tc-m32r.h (TC_START_LABEL): Likewise.
* config/tc-mep.h (TC_START_LABEL): Likewise.
testsuite/
* gas/bfin/stack2.s: Add pop multiple instruction with a label
on the same line.
* gas/bfin/stack2.d: Adjust accordingly.
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-arm.h | 2 | ||||
-rw-r--r-- | gas/config/tc-bfin.c | 15 | ||||
-rw-r--r-- | gas/config/tc-bfin.h | 4 | ||||
-rw-r--r-- | gas/config/tc-d30v.h | 2 | ||||
-rw-r--r-- | gas/config/tc-fr30.h | 8 | ||||
-rw-r--r-- | gas/config/tc-m32c.h | 8 | ||||
-rw-r--r-- | gas/config/tc-m32r.h | 2 | ||||
-rw-r--r-- | gas/config/tc-mep.h | 2 |
8 files changed, 17 insertions, 26 deletions
diff --git a/gas/config/tc-arm.h b/gas/config/tc-arm.h index 2a85afd..dacb342 100644 --- a/gas/config/tc-arm.h +++ b/gas/config/tc-arm.h @@ -161,7 +161,7 @@ void arm_copy_symbol_attributes (symbolS *, symbolS *); (arm_copy_symbol_attributes (DEST, SRC)) #endif -#define TC_START_LABEL(C,STR) (c == ':' || (c == '/' && arm_data_in_code ())) +#define TC_START_LABEL(C,S,STR) (C == ':' || (C == '/' && arm_data_in_code ())) #define tc_canonicalize_symbol_name(str) arm_canonicalize_symbol_name (str); #define obj_adjust_symtab() arm_adjust_symtab () diff --git a/gas/config/tc-bfin.c b/gas/config/tc-bfin.c index 1563e97..ea8243a 100644 --- a/gas/config/tc-bfin.c +++ b/gas/config/tc-bfin.c @@ -2175,15 +2175,14 @@ bfin_eol_in_insn (char *line) } bfd_boolean -bfin_start_label (char *ptr) +bfin_start_label (char *s, char *ptr) { - ptr--; - while (!ISSPACE (*ptr) && !is_end_of_line[(unsigned char) *ptr]) - ptr--; - - ptr++; - if (*ptr == '(' || *ptr == '[') - return FALSE; + while (s != ptr) + { + if (*s == '(' || *s == '[') + return FALSE; + s++; + } return TRUE; } diff --git a/gas/config/tc-bfin.h b/gas/config/tc-bfin.h index 2c9f4f3..976d39d 100644 --- a/gas/config/tc-bfin.h +++ b/gas/config/tc-bfin.h @@ -40,7 +40,7 @@ #define WORKING_DOT_WORD extern void bfin_start_line_hook (void); -extern bfd_boolean bfin_start_label (char *); +extern bfd_boolean bfin_start_label (char *, char *); #define md_start_line_hook() bfin_start_line_hook() #define md_number_to_chars number_to_chars_littleendian @@ -61,7 +61,7 @@ extern bfd_boolean bfin_eol_in_insn (char *); #define DOUBLESLASH_LINE_COMMENTS -#define TC_START_LABEL(ch ,ptr) (ch == ':' && bfin_start_label (ptr)) +#define TC_START_LABEL(c, s, ptr) (c == ':' && bfin_start_label (s, ptr)) #define tc_fix_adjustable(FIX) bfin_fix_adjustable (FIX) extern bfd_boolean bfin_fix_adjustable (struct fix *); diff --git a/gas/config/tc-d30v.h b/gas/config/tc-d30v.h index e63ef41..da7326f 100644 --- a/gas/config/tc-d30v.h +++ b/gas/config/tc-d30v.h @@ -48,7 +48,7 @@ extern long md_pcrel_from_section (struct fix *, segT); int d30v_cleanup (int); #define md_after_pass_hook() d30v_cleanup (FALSE) #define md_cleanup() d30v_cleanup (FALSE) -#define TC_START_LABEL(ch, ptr) (ch == ':' && d30v_cleanup (FALSE)) +#define TC_START_LABEL(ch, s, ptr) (ch == ':' && d30v_cleanup (FALSE)) void d30v_start_line (void); #define md_start_line_hook() d30v_start_line () diff --git a/gas/config/tc-fr30.h b/gas/config/tc-fr30.h index 54f60db..9859c8b 100644 --- a/gas/config/tc-fr30.h +++ b/gas/config/tc-fr30.h @@ -59,12 +59,8 @@ extern const struct relax_type md_relax_table[]; /* We need a special version of the TC_START_LABEL macro so that we allow the LDI:8, LDI:20, LDI:32 and delay slot instructions to be - parsed as such. Note - in a HORRIBLE HACK, we make use of the - knowledge that this marco is only ever evaluated in one place - (read_a_source_file in read.c) where we can access the local - variable 's' - the start of the symbol that was terminated by - 'character'. Also we need to be able to change the contents of + parsed as such. We need to be able to change the contents of the local variable 'c' which is passed to this macro as 'character'. */ -#define TC_START_LABEL(character, i_l_p) \ +#define TC_START_LABEL(character, s, i_l_p) \ ((character) != ':' ? 0 : (character = fr30_is_colon_insn (s)) ? 0 : ((character = ':'), 1)) extern char fr30_is_colon_insn (char *); diff --git a/gas/config/tc-m32c.h b/gas/config/tc-m32c.h index 1b5a483..4cab1d7 100644 --- a/gas/config/tc-m32c.h +++ b/gas/config/tc-m32c.h @@ -77,13 +77,9 @@ extern long md_pcrel_from_section (struct fix *, segT); /* We need a special version of the TC_START_LABEL macro so that we allow the :Z, :S, :Q and :G suffixes to be - parsed as such. Note - in a HORRIBLE HACK, we make use of the - knowledge that this marco is only ever evaluated in one place - (read_a_source_file in read.c) where we can access the local - variable 's' - the start of the symbol that was terminated by - 'character'. Also we need to be able to change the contents of + parsed as such. We need to be able to change the contents of the local variable 'c' which is passed to this macro as 'character'. */ -#define TC_START_LABEL(character, i_l_p) \ +#define TC_START_LABEL(character, s, i_l_p) \ ((character) != ':' ? 0 : (character = m32c_is_colon_insn (s)) ? 0 : ((character = ':'), 1)) extern char m32c_is_colon_insn (char *); diff --git a/gas/config/tc-m32r.h b/gas/config/tc-m32r.h index 8f03161..cf5dbf4 100644 --- a/gas/config/tc-m32r.h +++ b/gas/config/tc-m32r.h @@ -102,7 +102,7 @@ extern int m32r_force_relocation (struct fix *); /* Ensure insns at labels are aligned to 32 bit boundaries. */ int m32r_fill_insn (int); #define md_after_pass_hook() m32r_fill_insn (1) -#define TC_START_LABEL(ch, ptr) (ch == ':' && m32r_fill_insn (0)) +#define TC_START_LABEL(ch, s, ptr) (ch == ':' && m32r_fill_insn (0)) #define md_cleanup m32r_elf_section_change_hook #define md_elf_section_change_hook m32r_elf_section_change_hook diff --git a/gas/config/tc-mep.h b/gas/config/tc-mep.h index dd5118c..59f83b0 100644 --- a/gas/config/tc-mep.h +++ b/gas/config/tc-mep.h @@ -97,7 +97,7 @@ extern void mep_prepare_relax_scan (fragS *, offsetT *, relax_substateT); #define VTEXT_SECTION_NAME ".vtext" /* Needed to process pending instructions when a label is encountered. */ -#define TC_START_LABEL(ch, ptr) ((ch == ':') && mep_flush_pending_output ()) +#define TC_START_LABEL(ch, s, ptr) ((ch == ':') && mep_flush_pending_output ()) #define tc_unrecognized_line(c) mep_unrecognized_line (c) extern int mep_unrecognized_line (int); |