* config/tc-m32c.h (H_TICK_HEX): Define.
* config/tc-m32c.c (OPTION_H_TICK_HEX): Define. (md_longopts): Add support for it. (md_parse_option): Likewise. * doc/as.texinfo (Overview): Add new m32c options. * doc/c-m32c.texi (M32C-Modifiers): Likewise * as.h: (enable_h_tick_hex): New. * app.c (enable_h_tick_hex): New. (LEX_IS_H): New. (do_scrub_begin): Mark 'H' and 'h' as special if enable_h_tick_hex. (do_scrub_chars): If enable_h_tick_hex and 'h', check for H'00 style hex constants and convert the input stream to 0x00 style. (do_scrub_chars): If a 'X style character constant is found after a symbol character (like you're or X'00), warn the user.
This commit is contained in:
parent
d7d9f01ea1
commit
c54b5932c5
@ -1,3 +1,21 @@
|
||||
2008-07-18 DJ Delorie <dj@redhat.com>
|
||||
|
||||
* config/tc-m32c.h (H_TICK_HEX): Define.
|
||||
* config/tc-m32c.c (OPTION_H_TICK_HEX): Define.
|
||||
(md_longopts): Add support for it.
|
||||
(md_parse_option): Likewise.
|
||||
* doc/as.texinfo (Overview): Add new m32c options.
|
||||
* doc/c-m32c.texi (M32C-Modifiers): Likewise
|
||||
|
||||
* as.h: (enable_h_tick_hex): New.
|
||||
* app.c (enable_h_tick_hex): New.
|
||||
(LEX_IS_H): New.
|
||||
(do_scrub_begin): Mark 'H' and 'h' as special if enable_h_tick_hex.
|
||||
(do_scrub_chars): If enable_h_tick_hex and 'h', check for H'00
|
||||
style hex constants and convert the input stream to 0x00 style.
|
||||
(do_scrub_chars): If a 'X style character constant is found after
|
||||
a symbol character (like you're or X'00), warn the user.
|
||||
|
||||
2008-07-10 Richard Sandiford <rdsandiford@googlemail.com>
|
||||
|
||||
* config/tc-mips.c (mips16_mark_labels): Use ELF_ST_SET_MIPS16.
|
||||
|
43
gas/app.c
43
gas/app.c
@ -34,6 +34,10 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef H_TICK_HEX
|
||||
int enable_h_tick_hex = 0;
|
||||
#endif
|
||||
|
||||
#ifdef TC_M68K
|
||||
/* Whether we are scrubbing in m68k MRI mode. This is different from
|
||||
flag_m68k_mri, because the two flags will be affected by the .mri
|
||||
@ -78,6 +82,9 @@ static const char symbol_chars[] =
|
||||
#define LEX_IS_DOUBLEBAR_1ST 13
|
||||
#endif
|
||||
#define LEX_IS_PARALLEL_SEPARATOR 14
|
||||
#ifdef H_TICK_HEX
|
||||
#define LEX_IS_H 15
|
||||
#endif
|
||||
#define IS_SYMBOL_COMPONENT(c) (lex[c] == LEX_IS_SYMBOL_COMPONENT)
|
||||
#define IS_WHITESPACE(c) (lex[c] == LEX_IS_WHITESPACE)
|
||||
#define IS_LINE_SEPARATOR(c) (lex[c] == LEX_IS_LINE_SEPARATOR)
|
||||
@ -190,6 +197,14 @@ do_scrub_begin (int m68k_mri ATTRIBUTE_UNUSED)
|
||||
/* Must do this is we want VLIW instruction with "->" or "<-". */
|
||||
lex['-'] = LEX_IS_SYMBOL_COMPONENT;
|
||||
#endif
|
||||
|
||||
#ifdef H_TICK_HEX
|
||||
if (enable_h_tick_hex)
|
||||
{
|
||||
lex['h'] = LEX_IS_H;
|
||||
lex['H'] = LEX_IS_H;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Saved state of the scrubber. */
|
||||
@ -1009,6 +1024,14 @@ do_scrub_chars (int (*get) (char *, int), char *tostart, int tolen)
|
||||
|
||||
#ifndef IEEE_STYLE
|
||||
case LEX_IS_ONECHAR_QUOTE:
|
||||
if (state == 9)
|
||||
{
|
||||
char c;
|
||||
|
||||
c = GET ();
|
||||
as_warn ("'%c found after symbol", c);
|
||||
UNGET (c);
|
||||
}
|
||||
if (state == 10)
|
||||
{
|
||||
/* Preserve the whitespace in foo 'b'. */
|
||||
@ -1254,6 +1277,26 @@ do_scrub_chars (int (*get) (char *, int), char *tostart, int tolen)
|
||||
PUT ('\n');
|
||||
break;
|
||||
|
||||
#ifdef H_TICK_HEX
|
||||
case LEX_IS_H:
|
||||
/* Look for strings like H'[0-9A-Fa-f] and if found, replace
|
||||
the H' with 0x to make them gas-style hex characters. */
|
||||
if (enable_h_tick_hex)
|
||||
{
|
||||
char quot;
|
||||
|
||||
quot = GET ();
|
||||
if (quot == '\'')
|
||||
{
|
||||
UNGET ('x');
|
||||
ch = '0';
|
||||
}
|
||||
else
|
||||
UNGET (quot);
|
||||
}
|
||||
/* FALL THROUGH */
|
||||
#endif
|
||||
|
||||
case LEX_IS_SYMBOL_COMPONENT:
|
||||
if (state == 10)
|
||||
{
|
||||
|
4
gas/as.h
4
gas/as.h
@ -615,6 +615,10 @@ int generic_force_reloc (struct fix *);
|
||||
#endif
|
||||
#include "listing.h"
|
||||
|
||||
#ifdef H_TICK_HEX
|
||||
extern int enable_h_tick_hex;
|
||||
#endif
|
||||
|
||||
#ifdef TC_M68K
|
||||
/* True if we are assembling in m68k MRI mode. */
|
||||
COMMON int flag_m68k_mri;
|
||||
|
@ -68,12 +68,14 @@ const char * md_shortopts = M32C_SHORTOPTS;
|
||||
#define OPTION_CPU_M16C (OPTION_MD_BASE)
|
||||
#define OPTION_CPU_M32C (OPTION_MD_BASE + 1)
|
||||
#define OPTION_LINKRELAX (OPTION_MD_BASE + 2)
|
||||
#define OPTION_H_TICK_HEX (OPTION_MD_BASE + 3)
|
||||
|
||||
struct option md_longopts[] =
|
||||
{
|
||||
{ "m16c", no_argument, NULL, OPTION_CPU_M16C },
|
||||
{ "m32c", no_argument, NULL, OPTION_CPU_M32C },
|
||||
{ "relax", no_argument, NULL, OPTION_LINKRELAX },
|
||||
{ "h-tick-hex", no_argument, NULL, OPTION_H_TICK_HEX },
|
||||
{NULL, no_argument, NULL, 0}
|
||||
};
|
||||
size_t md_longopts_size = sizeof (md_longopts);
|
||||
@ -125,6 +127,10 @@ md_parse_option (int c, char * arg ATTRIBUTE_UNUSED)
|
||||
m32c_relax = 1;
|
||||
break;
|
||||
|
||||
case OPTION_H_TICK_HEX:
|
||||
enable_h_tick_hex = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
@ -86,3 +86,5 @@ extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
|
||||
#define TC_START_LABEL(character, i_l_p) \
|
||||
((character) != ':' ? 0 : (character = m32c_is_colon_insn (s)) ? 0 : ((character = ':'), 1))
|
||||
extern char m32c_is_colon_insn PARAMS ((char *));
|
||||
|
||||
#define H_TICK_HEX 1
|
||||
|
@ -331,7 +331,7 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}.
|
||||
@ifset M32C
|
||||
|
||||
@emph{Target M32C options:}
|
||||
[@b{-m32c}|@b{-m16c}]
|
||||
[@b{-m32c}|@b{-m16c}] [-relax] [-h-tick-hex]
|
||||
@end ifset
|
||||
@ifset M32R
|
||||
|
||||
@ -765,6 +765,12 @@ Assemble M32C instructions.
|
||||
@item -m16c
|
||||
Assemble M16C instructions (the default).
|
||||
|
||||
@item -relax
|
||||
Enable support for link-time relaxations.
|
||||
|
||||
@item -h-tick-hex
|
||||
Support H'00 style hex constants in addition to 0x00 style.
|
||||
|
||||
@end table
|
||||
@end ifset
|
||||
|
||||
|
@ -45,6 +45,13 @@ Assemble M32C instructions.
|
||||
@cindex architecture options, M16C
|
||||
@cindex M16C architecture option
|
||||
Assemble M16C instructions (default).
|
||||
|
||||
@item -relax
|
||||
Enable support for link-time relaxations.
|
||||
|
||||
@item -h-tick-hex
|
||||
Support H'00 style hex constants in addition to 0x00 style.
|
||||
|
||||
|
||||
@end table
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user