mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-04-24 14:53:34 +08:00
Add a -mno-dollar-line-separator command line option to the AVR assembler.
Some frontends, like the gcc Objective-C frontend, emit symbols with $ characters in them. The AVR target code in gas treats $ as a line separator, so the code doesn?t assemble correctly. Provide a machine-specific option to disable treating $ as a line separator. * config/tc-avr.c (enum options): Add option flag. (struct option): Add option -mno-dollar-line-separator. (md_parse_option): Adjust treatment of $ when option is present. * config/tc-avr.h: Use avr_line_separator_chars.
This commit is contained in:
parent
bda3d9fbc8
commit
d86d1fc7f9
@ -1,3 +1,12 @@
|
||||
2021-08-11 Matt Jacobson <mhjacobson@me.com>
|
||||
|
||||
* config/tc-avr.c (enum options): Add option flag.
|
||||
(struct option): Add option -mno-dollar-line-separator.
|
||||
(md_parse_option): Adjust treatment of $ when option is present.
|
||||
(usage): Mention the new option.
|
||||
* config/tc-avr.h: Use avr_line_separator_chars.
|
||||
* doc/c-avr.texi: Document the new option.
|
||||
|
||||
2021-08-11 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* config/tc-tic4x.c (tic4x_gen_to_words): Fix typo.
|
||||
|
@ -157,7 +157,9 @@ static struct avr_opcodes_s *avr_gccisr_opcode;
|
||||
|
||||
const char comment_chars[] = ";";
|
||||
const char line_comment_chars[] = "#";
|
||||
const char line_separator_chars[] = "$";
|
||||
|
||||
const char *avr_line_separator_chars = "$";
|
||||
static const char *avr_line_separator_chars_no_dollar = "";
|
||||
|
||||
const char *md_shortopts = "m:";
|
||||
struct mcu_type_s
|
||||
@ -565,7 +567,8 @@ enum options
|
||||
OPTION_ISA_RMW,
|
||||
OPTION_LINK_RELAX,
|
||||
OPTION_NO_LINK_RELAX,
|
||||
OPTION_HAVE_GCCISR
|
||||
OPTION_HAVE_GCCISR,
|
||||
OPTION_NO_DOLLAR_LINE_SEPARATOR,
|
||||
};
|
||||
|
||||
struct option md_longopts[] =
|
||||
@ -578,6 +581,7 @@ struct option md_longopts[] =
|
||||
{ "mlink-relax", no_argument, NULL, OPTION_LINK_RELAX },
|
||||
{ "mno-link-relax", no_argument, NULL, OPTION_NO_LINK_RELAX },
|
||||
{ "mgcc-isr", no_argument, NULL, OPTION_HAVE_GCCISR },
|
||||
{ "mno-dollar-line-separator", no_argument, NULL, OPTION_NO_DOLLAR_LINE_SEPARATOR },
|
||||
{ NULL, no_argument, NULL, 0 }
|
||||
};
|
||||
|
||||
@ -687,6 +691,8 @@ md_show_usage (FILE *stream)
|
||||
" -mlink-relax generate relocations for linker relaxation (default)\n"
|
||||
" -mno-link-relax don't generate relocations for linker relaxation.\n"
|
||||
" -mgcc-isr accept the __gcc_isr pseudo-instruction.\n"
|
||||
" -mno-dollar-line-separator\n"
|
||||
" do not treat the $ character as a line separator.\n"
|
||||
));
|
||||
show_mcu_list (stream);
|
||||
}
|
||||
@ -756,6 +762,10 @@ md_parse_option (int c, const char *arg)
|
||||
case OPTION_HAVE_GCCISR:
|
||||
avr_opt.have_gccisr = 1;
|
||||
return 1;
|
||||
case OPTION_NO_DOLLAR_LINE_SEPARATOR:
|
||||
avr_line_separator_chars = avr_line_separator_chars_no_dollar;
|
||||
lex_type['$'] = LEX_NAME | LEX_BEGIN_NAME;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -143,7 +143,7 @@ extern int avr_force_relocation (struct fix *);
|
||||
would print `12 34 56 78'. The default value is 4. */
|
||||
#define LISTING_WORD_SIZE 2
|
||||
|
||||
/* AVR port uses `$' as a logical line separator. */
|
||||
/* AVR port uses `$' as a logical line separator by default. */
|
||||
#define LEX_DOLLAR 0
|
||||
|
||||
/* An `.lcomm' directive with no explicit alignment parameter will
|
||||
@ -244,3 +244,6 @@ struct avr_frag_data
|
||||
#define TC_FRAG_TYPE struct avr_frag_data
|
||||
#define TC_FRAG_INIT(frag, max_bytes) avr_frag_init (frag)
|
||||
extern void avr_frag_init (fragS *);
|
||||
|
||||
#define tc_line_separator_chars avr_line_separator_chars
|
||||
extern const char *avr_line_separator_chars;
|
||||
|
@ -159,6 +159,12 @@ information.
|
||||
@item -mgcc-isr
|
||||
Enable the @code{__gcc_isr} pseudo instruction.
|
||||
|
||||
@cindex @code{-mno-dollar-line-separator} command line option, AVR
|
||||
@item -mno-dollar-line-separator
|
||||
Do not treat the @code{$} character as a line separator character.
|
||||
This is for languages where @code{$} is valid character inside symbol
|
||||
names.
|
||||
|
||||
@end table
|
||||
|
||||
|
||||
@ -189,7 +195,8 @@ control command (@pxref{Preprocessing}).
|
||||
@cindex AVR line separator
|
||||
|
||||
The @samp{$} character can be used instead of a newline to separate
|
||||
statements.
|
||||
statements. Note: the @option{-mno-dollar-line-separator} option
|
||||
disables this behaviour.
|
||||
|
||||
@node AVR-Regs
|
||||
@subsection Register Names
|
||||
|
Loading…
x
Reference in New Issue
Block a user